Версия JavaScript в HTA

Кто-нибудь знает, какая версия JavaScript используется HTA файлами.

В настоящее время создаем несколько файлов script и пытаемся использовать Object.defineProperty

При запуске как HTA - это ошибки, указывающие, что Object не поддерживает это свойство или метод. Я запустил его как HTM файл, чтобы проверить - и нет никаких проблем.

Поэтому я могу только предположить, что mshta.exe использует старый JavaScript-движок. Может ли кто-нибудь подтвердить это?

Ответ 1

Используемая версия JavaScript (или JScript) зависит от трех факторов: установленной версии Interner Explorer, используемого объявления типа документа (DTD) и метатега x-ua-compatible.

Несмотря на то, что HTAs запускается mshta.exe, IE предоставляет JavaScript и механизмы рендеринга для приложений, поэтому все сказанное позже о версиях JS - это полевые модели, позиционирование, CSS и т.д., а также доступные API и HTML-элементы.

Если в вашей системе установлен IE11, вы можете использовать последнюю версию JavaScript с помощью <!DOCTYPE html> и <meta http-equiv="x-ua-compatible" content="ie=edge" />.

Естественно, установка content в IE=edge не отменяет старую версию установленного IE, используется последний доступный режим. Вместо edge вы можете использовать номера версий IE для понижения рейтинга при запуске с новыми IE.

Опускание DTD должно всегда приостанавливать выполнение приложения в режиме Quirks, что в случае HTA аналогично IE5. Однако в этом случае режим документа можно изменить с помощью x-ua-compatible, но были некоторые несоответствия, по крайней мере, в IE8 и 9. Всегда безопаснее использовать DTD, если режим Quirks не требуется.

С DTD, но без x-ua-compatible метатег HTAs запускается в режиме стандартов IE7 (который не поддерживает object.defineProperty(), он представлен в IE9).

Вы можете узнать больше о предмете в MSDN: Введение в приложения HTML (HTAs)

Информация о версии IE для JS и CSS может быть найдена в MSDN:

Информация о версии JavaScript

Совместимость CSS в Internet Explorer

Здесь "безопасный старт" для файла HTA, если вы хотите использовать последнюю доступную версию:

<!DOCTYPE html>
<html>
<head>
<title>HTA</title>
<meta http-equiv="x-ua-compatible" content="ie=edge" />
// All link, style and script tags, or any code should be placed below the five lines above

Вы также можете использовать функции ScriptEngine, чтобы узнать последнюю версию script:

ver = ScriptEngine() + ' V ';
ver += ScriptEngineMajorVersion() + '.';
ver += ScriptEngineMinorVersion() + '.';
ver += ScriptEngineBuildVersion();
alert(ver);

Обратите внимание, что это показывает только последнюю версию, предоставленную браузером, режим документа не влияет на возвращаемые значения.