Ответ 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);
Обратите внимание, что это показывает только последнюю версию, предоставленную браузером, режим документа не влияет на возвращаемые значения.