通过在CLSID"{16d51579-a30b-4c8b-a276-0ff4dc41e755}"(如此处描述)的基础上创建IActiveScript的实例,我们得到了IE9的JavaScript引擎,它在Quirks模式下工作。不幸的是,在 Quirks 模式下不支持 ECMAScript 5。
有谁知道如何为"Chakra"创建一个在IE9标准模式下工作的IActiveScript实例?
将你的IActiveScript
投射到IActiveScriptProperty
然后像这样用SCRIPTPROP_INVOKEVERSIONING
调用SetProperty
:
CComQIPtr<IActiveScriptProperty> property = jscript;
CComVariant version(SCRIPTLANGUAGEVERSION_5_8 + 1); // = 3
hr = property->SetProperty(SCRIPTPROP_INVOKEVERSIONING, nullptr, &version);
CLSID是16d51579-a30b-4c8b-a276-0ff4dc41e755。 这里有关于 Active Script 和 JScript 接口的各种重要信息,特别是对于那些使用 C# 的人。
万一人们想知道:用"SCRIPTPROP_INVOKEVERSIONING"调用"SetProperty"的技巧仍然有效。现在支持的最大版本(使用 jscript9.dll版本 11.0.16299.2107)显然是 15。
它似乎支持IE中可用的任何"最新"功能,例如"let","const"或"Map",但没有Edge中支持的功能(例如"类")。