使用的 JavaScript(或 JScript)版本取决于三件事:安装的内部资源管理器版本、使用的文档类型声明 (DTD) 和 x-ua-compatible 元标记。
虽然 HTA 由 mshta.exe 运行,但 IE 为应用程序提供 JavaScript 和渲染引擎,因此后面所说的关于 JS 版本的所有内容都代表盒子模型、定位、CSS 等,以及可用的 API 和 HTML 元素。
如果您的系统中安装了 IE11,则可以通过 <!DOCTYPE html> 和 <meta http-equiv="x-ua-compatible" content="ie=edge" /> 使用最新版本的 JavaScript。
当然,将content 设置为IE=edge 不会覆盖已安装IE 的旧版本,而是使用最新的可用模式。在使用较新的 IE 运行时,您可以使用 IE 版本号来降级应用程序,而不是 edge。
省略 DTD 应始终使应用程序在 Quirks 模式下运行,在 HTA 的情况下类似于 IE5。但是,在这种情况下,可以使用x-ua-compatible 更改文档模式,但至少在 IE8 和 9 中存在一些不一致。如果不需要 Quirks 模式,使用 DTD 总是最安全的。
使用 DTD,但没有 x-ua-compatible 元标记 HTA 在 IE7 标准模式下运行(不支持 object.defineProperty(),它是在 IE9 中引入的)。
您可以在 MSDN 上阅读有关该主题的更多信息:Introduction to HTML Applications (HTAs)
JS 和 CSS 的 IE 版本信息可以在 MSDN 上找到:
JavaScript version information
CSS Compatibility in 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 函数查找最新的脚本版本:
ver = ScriptEngine() + ' V ';
ver += ScriptEngineMajorVersion() + '.';
ver += ScriptEngineMinorVersion() + '.';
ver += ScriptEngineBuildVersion();
alert(ver);
注意,这里只显示浏览器提供的最新版本,文档模式对返回值没有影响。