这是一个非常非常非常奇怪的问题。

我有一个在Windows XP和7上运行的JSCRIPT,它使用dos CSCRIPT在一个名为testJSON.js的文件中。

if ( ! this.JSON ) WScript.Echo("JSON DOESN'T EXISTS");

而且,消息出现了,但这是JSCRIPT的意外行为,因为JSON(如MSDN documentation所说)是JSCRIPT 5.8中的默认对象之一,而我在Windows 7上的系统正好运行JSCRIPT 5.8

现在,我已经通过创建一个新的文本文件并手动组成一个有效的JSON字符串(用一个稍微复杂的脚本)来临时解决了这个问题(很明显,即使系统没有要求的JSCRIPT 5.8,这也使得一切正常JSON),但我主要想了解两件事:

1st 为什么即使我的JSCRIPT版本是支持该对象的版本,我也不能使用JSON对象?

第二个我的JSCRIPT环境中有read something about the "enabling" of the JSON (and other) unavailable object,但是所有示例都是针对C#的,我想知道是否存在一些与JSCRIPT等效的代码。

最佳答案



根据MSDN的说明,Windows Script Host默认使用JScript 5.7功能集来实现向后兼容。 JScript 5.8功能集仅在IE8 +标准文档模式下的Internet Explorer中使用。

您有以下选择:

  • 在脚本中包括json2.js。有关在JScript脚本中包括外部脚本的选项,请参见this question
  • 将注册表修改为expose IE9's JScript engine to Windows Script Host。 UPD:此解决方案使用IE的JScript DLL,但不激活5.8功能集。
  • 使用Active Script接口(interface)使用
  • Create a JScript execution host programmatically,并使用 IActiveScriptProperty::SetProperty 强制使用JScript 5.8功能集(SCRIPTLANGUAGEVERSION_5_8)。 Here's a C++ example



  • 只能使用具有适当COM支持的语言来创建自定义脚本执行主机,例如C++,C#等。不能使用JScript,因为例如,它不支持out参数。

    关于json - cscript jscript JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19445189/

    10-10 17:04