在Windows中运行JavaScript

Ne0*_*Ne0 10 javascript windows

我想过一些简单的测试只是运行一些命令我会尝试使用一些JavaScript并从Windows XP的命令行运行它.

因此,为了快速测试,我创建了一个脚本

alert('Hello, World!');
Run Code Online (Sandbox Code Playgroud)

然后试着运行它

D:\>Cscript.exe hello.js
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.

D:\hello.js(1, 1) Microsoft JScript runtime error: Object expected
Run Code Online (Sandbox Code Playgroud)

谷歌没有帮助,我相信我错过了一些愚蠢的东西,你们中的任何人都可以解释为什么这个简单的剧本不运行?

Que*_*tin 17

您正在调用一个名为的函数alert,但这不是JavaScript的一部分(它是DOM 0的一部分,由浏览器提供)

由于您尚未定义它,因此您尝试将其undefined视为一种功能,而不是它.

Qnan建议使用Echo方法.

  • 应该使用类似`WSH.Echo("Hello world");`的东西 (3认同)

mpl*_*jan 7

尝试命名函数替换,因为WSH不支持window.alert方法.

if (!alert) alert = function foo(s){WScript.Echo(s)}
alert("hello world");
Run Code Online (Sandbox Code Playgroud)


vol*_*inc 5

一个好的方法是重定向所有通常的输出,如以下示例所示。它使您无需重写即可测试专为Web设计的JavaScript。

test.js

var console = {
    info: function (s){
        WSH.Echo(s);
    }
}
var document = {
    write : function (s){
        WSH.Echo(s);
    }
}
var alert = function (s){
    WSH.Echo(s);
}

console.info("test");
document.write("test2");
alert("test3");
Run Code Online (Sandbox Code Playgroud)

您可以这样调用脚本:

Cscript.exe test.js firstParam secondParam
Run Code Online (Sandbox Code Playgroud)

这将为您提供:

test
test1
test2
Run Code Online (Sandbox Code Playgroud)