Javascript 获取js执行环境的版本描述
我在Windows脚本主机中运行javascript,因此不涉及浏览器 如何从脚本中确定其执行环境WSH支持哪个版本的JavaScript?对于那些不熟悉WSH的人,它会将一个“原始”JavaScript脚本作为输入,即一个没有周围Javascript 获取js执行环境的版本描述,javascript,wsh,Javascript,Wsh,我在Windows脚本主机中运行javascript,因此不涉及浏览器 如何从脚本中确定其执行环境WSH支持哪个版本的JavaScript?对于那些不熟悉WSH的人,它会将一个“原始”JavaScript脚本作为输入,即一个没有周围标记的脚本,就像HTML嵌入脚本一样。Afaik WSH将脚本直接传递给其注册的javascript引擎(JScript.Dll)执行,而不涉及任何浏览器 谷歌搜索似乎只会显示那些假定脚本在浏览器中执行的方法,而在WSH中执行的脚本则不是这样。请查看以下示例中的一些W
标记的脚本,就像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.8WScript.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引入)。您可以通过和找到JavaScript和JScript版本对应关系
基于此,我假设以下兼容性:
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对象从它传输到您的应用程序,但这是一个漫长的过程,可能不值得付出努力。