Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取js执行环境的版本描述_Javascript_Wsh - Fatal编程技术网

Javascript 获取js执行环境的版本描述

Javascript 获取js执行环境的版本描述,javascript,wsh,Javascript,Wsh,我在Windows脚本主机中运行javascript,因此不涉及浏览器 如何从脚本中确定其执行环境WSH支持哪个版本的JavaScript?对于那些不熟悉WSH的人,它会将一个“原始”JavaScript脚本作为输入,即一个没有周围标记的脚本,就像HTML嵌入脚本一样。Afaik WSH将脚本直接传递给其注册的javascript引擎(JScript.Dll)执行,而不涉及任何浏览器 谷歌搜索似乎只会显示那些假定脚本在浏览器中执行的方法,而在WSH中执行的脚本则不是这样。请查看以下示例中的一些W

我在Windows脚本主机中运行javascript,因此不涉及浏览器

如何从脚本中确定其执行环境WSH支持哪个版本的JavaScript?对于那些不熟悉WSH的人,它会将一个“原始”JavaScript脚本作为输入,即一个没有周围
标记的脚本,就像HTML嵌入脚本一样。Afaik WSH将脚本直接传递给其注册的javascript引擎(JScript.Dll)执行,而不涉及任何浏览器


谷歌搜索似乎只会显示那些假定脚本在浏览器中执行的方法,而在WSH中执行的脚本则不是这样。

请查看以下示例中的一些WSH内置属性:

var fso = new ActiveXObject("Scripting.FileSystemObject");
var s = '';
s = s + 'WScript.Version = ' + WScript.Version + '\n';
s = s + 'WScript.BuildVersion = ' + WScript.BuildVersion + '\n';
s = s + 'ScriptEngineMajorVersion = ' + ScriptEngineMajorVersion() + '\n';
s = s + 'ScriptEngineMinorVersion = ' + ScriptEngineMinorVersion() + '\n';
s = s + 'ScriptEngineBuildVersion = ' + ScriptEngineBuildVersion() + '\n';
s = s + WScript.FullName + ' version = ' + fso.GetFileVersion(WScript.FullName) + '\n';
WScript.Echo(s);
代码为我提供了输出:

WScript.Version=5.8
WScript.BuildVersion=18283
ScriptEngineMareVersion=5
ScriptEngineMinorVersion=8
ScriptEngineBuildVersion=18231
C:\Windows\System32\WScript.exe版本=5.8.7601.18283

关键是您可以通过这种方式检索WSH版本(尽管我不知道
WScript.BuildVersion
ScriptEngineBuildVersion
之间的区别)

WSH版本有1.0、2.0(也称为5.1)、5.6、5.7、5.8和5.812。С考虑到JScript版本与WSH相同(除了JScript 5.1适用于WSH 2.0之外,也许-我还没有找到任何证据-JScript 9.0适用于WSH 5.812,因为JScript 9.0随IE 9引入,后来的WSH 5.812随Windows 10引入)。您可以通过和找到JavaScriptJScript版本对应关系

基于此,我假设以下兼容性:

WSH-JavaScript
1.0        1.0
2.0        1.4
5.5-5.8    1.5
5.812 1.8.1(需要检查)

您误读了这本书:变量是在代码前面手动定义的。无论如何,第四版是15年前出版的,代码检测到的JS版本已经过时很久了。“更早手动定义”既然你有这本书,你能指出确切的位置吗?也许我的视力不太好。Tks…我有这本电子书,所以我不知道你到底在说哪个代码段,但是每个使用
\u version
\u js12\u
的例子都是从
\u version=1.2(在现代环境中不起作用)。示例20-1中显示了
\u版本。但是在WSH中,代码没有任何周围的标记,所以我很高兴接受这个示例不适用于WSH环境。这就是为什么我问我的问题。提到O'Reilly的书显然是为了分散注意力,所以我把它从我的q中删去,并用更多的解释来代替它,解释为什么在WSH中执行不同于在网页中嵌入脚本。非常感谢。一个小问题:如果我从命令行使用WScript.Exe运行脚本,您的脚本工作正常,但是如果我在我(Delphi)应用程序的WSH窗口中运行脚本,它会抱怨
WScript
未定义。是否有办法修复该问题,使其正确运行?@MartynA,WSScript对象仅在WSH脚本引擎中可用,其他引擎也可以通过模拟或基于WScript.exe来使用它。我想您的Delphi应用程序有自己的脚本引擎实现,没有内置的WScript支持,也有JavaScript风格。因此,它应该有另一种方法来检索引擎版本。如果您打算使用任何WScript方法,您可以尝试在单独的WScript.exe进程中启动temp.js文件,并将WScript对象从它传输到您的应用程序,但这是一个漫长的过程,可能不值得付出努力。