首页 > 解决方案 > Windows XP 中的批处理 HTA 混合脚本错误

问题描述

我写了一个批处理 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>

标签: htmlbatch-filehta

解决方案


推荐阅读