Пакетная ошибка гибридного сценария HTA ​​в Windows XP - PullRequest
0 голосов
/ 13 июня 2019

Я написал пакетный гибридный скрипт HTA.Я использую это, чтобы обработать некоторый пользовательский ввод.Он работает под Windows 7 и 10. В Windows XP я всегда получаю сообщение об ошибке:

document.getElementById;является нулевым или нет объекта

Может быть, у кого-то есть идея или может сказать мне, где моя ошибка?

Вот небольшой исполняемый фрагмент сценария:

<!-- :: Batch section
@echo off
title Meldung
setlocal enableextensions disabledelayedexpansion

set message=""
set lastname=Dude
set firstname=Der
set userc=1234

:goon
for /F "tokens=1" %%a in ('mshta.exe "%~F0" test2 %userc% %lastname% %firstname% %message%') do (
        set "button=%%a"
    )
if "%button%" == "2" goto :end
echo %lastname%%time% >> logtext.txt
set message="successfully"
goto :goon

:end
goto :eof 
-->
<HTML>
<HEAD>
<HTA:APPLICATION SCROLL="no" SYSMENU="no" ID="thisHTAID" >
<TITLE>Try</TITLE>
<SCRIPT language="JavaScript">
    window.resizeTo(450,300);
    window.moveTo(0,0);

    // function handling test2 hta output
    function myButton( selectedb ){
        new ActiveXObject("Scripting.FileSystemObject")
            .GetStandardStream(1)
            .WriteLine( selectedb );
        window.close()
    };

    function parseCommandline(commandLine) {
        var rx = /"[^"]+"\s*?|\S+\s*?/g;
        var args = [];
        var match;
        while (match = rx.exec(commandLine)) {
            if (match[0].charAt(0) === '"') {
                args.push(match[0].substring(1, match[0].length - 1));
            } else {
                args.push(match[0]);
            }
        }
        return args;
    }

    // on window load select what div to show depending on command line 
        window.onload = function(){
        var commandLine = thisHTAID.commandLine;
        var args = parseCommandline(commandLine);
        var test = args[1];
        var testa = args[2];
        var testb = args[3];
        var testc = args[4];
        var testd = args[5];
        document.getElementById("number").innerHTML=testa;
        document.getElementById("name").innerHTML=testb;
        document.getElementById("firstname").innerHTML=testc;
        document.getElementById("message").innerHTML=testd;
        document.getElementById( test ).style.display='block';
    };

</SCRIPT>
<style type="text/css">
.auto-style1 {
    text-align: center;
    font-family: Georgia, "Times New Roman", Times, serif;
}
.auto-style3 {
    color: #008000;
    text-align: center;
    font-size: 12pt;
    font-family: Georgia, "Times New Roman", Times, serif;
}       
</style>
</HEAD>
<BODY>
    <div id="test2" style='display:none'>
        <h3 class="auto-style1">Process</h3>
        <table style="width: 100%" >
            <tr>
                <td style="width: 150px"><strong>Number:</strong></td>
                <td id="number"></td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td>&nbsp;</td>         
            </tr>
            <tr>
                <td><strong>Name:</strong></td>
                <td id="name"></td>
            </tr>
            <tr>
                <td><strong>Firstname:</strong></td>
                <td id="firstname"></td>
            </tr>
        </table>
        <p></p>
        <button onclick="myButton(1)" style="width: 90px; height: 40px; margin-right: 20px; font-size: 9pt; font-family: Georgia, "Times New Roman", Times, serif; "><b>Write</b></button>
        <button onclick="myButton(2)" style="width: 90px; height: 40px; margin-right: 10px; font-size: 9pt; font-family: Georgia, "Times New Roman", Times, serif; "><b>End</b></button>
        <p></p>
        <p class="auto-style3" id="message"></p>
    </div>  
</BODY>
</HTML>
...