我想一些简单的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弹出框以及其他漂亮的语言附加功能。 你可能比浏览器的控制台更喜欢它…