Экземпляр IActiveScript, который реализует движок JavaScript IE9 ("Чакра"), работает в режиме Quirks
Создав экземпляр IActiveScript на основе CLSID "{16d51579-a30b-4c8b-a276-0ff4dc41e755}" (как описано здесь), мы получаем механизм JavaScript IE9, который работает в режиме Quirks. К сожалению, в режиме Quirks не поддерживается ECMAScript 5.
Кто-нибудь знает, как создать экземпляр IActiveScript для "Чакры", который работает в режиме стандартов IE9?
3 ответа
Брось свой IActiveScript
в IActiveScriptProperty
затем позвоните SetProperty
с SCRIPTPROP_INVOKEVERSIONING
на это так:
CComQIPtr<IActiveScriptProperty> property = jscript;
CComVariant version(SCRIPTLANGUAGEVERSION_5_8 + 1); // = 3
hr = property->SetProperty(SCRIPTPROP_INVOKEVERSIONING, nullptr, &version);
На всякий случай, если люди задаются вопросом: трюк вызова «SetProperty» с «SCRIPTPROP_INVOKEVERSIONING» все еще работает. Самая большая поддерживаемая версия сейчас (с версией jscript9.dll 11.0.16299.2107), по-видимому, 15.
Похоже, он поддерживает любые «последние» функции, доступные в IE, такие как «let», «const» или «Map», но не поддерживает то, что поддерживается в Edge (например, «class»).
Я считаю, что CLSID - это 16d51579-a30b-4c8b-a276-0ff4dc41e755. Здесь есть всякая отличная информация об интерфейсах Active Script и JScript, особенно для тех, кто работает с C#.