在Windows中运行JavaScript

我想一些简单的testing,只是运行一些命令,我​​会尝试使用一些JavaScript,并从Windows XP中的命令行运行它。

所以为了快速testing,我创build了一个脚本

alert('Hello, World!'); 

然后试图运行它

 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 

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

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

既然你还没有定义它,你试图将undefined为一个函数,它不是。

Qnan建议使用Echo方法。

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

 if (!alert) alert = function foo(s){WScript.Echo(s)} alert("hello world"); 

一个好的方法是像下面的例子那样重定向所有通常的输出。 它将允许您测试为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"); 

你可以这样调用脚本:

 Cscript.exe test.js firstParam secondParam 

这会给你:

 test test1 test2 

alert是browswer window对象的一种方法。 窗口的脚本主机不提供这样的对象。

Microsoft的JScript运行时编译器不提供当今所有主流浏览器都支持的DOM(文档对象模型)中的原生JavaScript弹出窗口。 但是,这可以通过在WSH(Windows Scripting Host)中找到的本机MessageBox (与WSH支持的任何其他脚本语言)一起包装函数(在您的情况下为alert )来完成。

但是,只是为了给你一个更简单的选择…尝试DeskJS 。 这是一个新的用于Windows的控制台风格的应用程序,旨在远离浏览器运行纯JavaScript( ECMAScript 5.1 ),并支持所有基本的JavaScript弹出框以及其他漂亮的语言附加功能。 你可能比浏览器的控制台更喜欢它…