HTA 中的 JavaScript 版本

IT技术 javascript version hta defineproperty
2021-02-03 06:37:05

有谁知道 HTA 文件使用什么版本的 JavaScript。

当前正在创建一些脚本文件 - 并试图利用 Object.defineProperty

当作为 HTA 运行时 - 它错误地指出 Object 不支持此属性或方法。我将它作为 HTM 文件运行只是为了检查 - 根本没有问题。

所以我只能假设它mshta.exe使用的是较旧的 JavaScript 引擎。任何人都可以证实这一点吗?

1个回答

使用的 JavaScript(或 JScript)版本取决于三件事:安装的 Interner Explorer 版本、使用的文档类型声明 (DTD) 和x-ua-compatible元标记。

虽然 HTA 由 mshta.exe 运行,但 IE 为应用程序提供了 JavaScript 和渲染引擎,因此后面关于 JS 版本的所有内容都代表盒模型、定位、CSS 等,以及可用的 API 和 HTML 元素。

如果您的系统中安装了 IE11,则可以通过使用<!DOCTYPE html>来使用最新版本的 JavaScript <meta http-equiv="x-ua-compatible" content="ie=edge" />

当然,将 设置contentIE=edge不会覆盖已安装 IE 的旧版本,而是使用最新的可用模式。代替edge,您可以使用 IE 版本号在使用较新的 IE 运行时降级应用程序。

省略 DTD 应该总是让应用程序在 Quirks 模式下运行,在 HTA 的情况下类似于 IE5。但是,在这种情况下,可以使用 更改文档模式x-ua-compatible,但至少在 IE8 和 9 中存在一些不一致。如果不需要 Quirks 模式,使用 DTD 总是最安全的。

使用 DTD,但没有x-ua-compatible元标记 HTA 在 IE7 标准模式下运行(不支持object.defineProperty(),它在 IE9 中引入)。

您可以在 MSDN:HTML 应用程序简介 (HTA) 中阅读有关该主题的更多信息

JS 和 CSS 的 IE 版本信息可以在 MSDN 上找到:

JavaScript 版本信息

Internet Explorer 中的 CSS 兼容性

当您想使用最新的可用版本时,这是 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);

请注意,这仅显示浏览器提供的最新版本,文档模式对返回值没有影响。

@Teemu 然而只有 IE11 支持诸如 flex module、渐变等 CSS 功能
2021-03-14 06:37:05
IE=9完美运行!我希望这会在某个时候得到解决,但值得怀疑,因为他们似乎正在逐步淘汰这一点。如果下一版本的 Windows 不支持 HTA 文件,我不会感到惊讶。
2021-04-02 06:37:05
@ndm13 请注意,您可以解决此问题,方法是将 HTA 标记和属性放在一个文件和设置中NVAIGABLE=yes,并将 HTML 放在单独的文件中。然后您可以window.location在 HTA 中使用导航到您的 HTML 文件,HTML 文件将使用适合该页面的最新 IE。
2021-04-02 06:37:05
每当我使用元标记时,我的 hta:application 属性都不起作用。如果我将其注释掉,那么它们就会注释掉。有解决办法吗?
2021-04-10 06:37:05
不幸的是,我对此没有很好的解决方案。从 IE10 开始,似乎不再应用许多 HTA 属性(在解析的代码中,HTA标记移至body)。在 IE9 中,它们似乎仍然受到尊重。我主要使用IE=9代替IE=edge,它至少提供了现代事件处理和大部分 HTML5 标记,包括svgcanvas
2021-04-11 06:37:05