Экземпляр 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#.

Другие вопросы по тегам