有谁知道HTA文件使用的是什么版本的JavaScript。HTA中的JavaScript版本
目前创造了一些脚本文件 - 并试图利用Object.defineProperty
当作为HTA运行 - 它的错误,指出对象不支持此属性或方法。我已经将它作为一个HTM文件运行来检查 - 并且完全没有问题。
所以我只能假设mshta.exe
正在使用旧的JavaScript引擎。任何人都可以证实这一点?
有谁知道HTA文件使用的是什么版本的JavaScript。HTA中的JavaScript版本
目前创造了一些脚本文件 - 并试图利用Object.defineProperty
当作为HTA运行 - 它的错误,指出对象不支持此属性或方法。我已经将它作为一个HTM文件运行来检查 - 并且完全没有问题。
所以我只能假设mshta.exe
正在使用旧的JavaScript引擎。任何人都可以证实这一点?
使用的JavaScript(或JScript)版本取决于三件事:安装了Interner Explorer版本,使用的文档类型声明(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版本号代替edge
时,可以使用IE版本号来降级应用程序,并使用较新的IE进行运行。
省略DTD应该总是放弃应用程序以Quirks模式运行,在HTA情况下它与IE5类似。但是,在这种情况下,文档模式可以使用x-ua-compatible
进行更改,但至少在IE8中存在一些不一致之处。如果不需要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);
请注意,这仅显示通过浏览器提供的最新版本,文件模式不具有影响到返回的值。
每当我使用元标记,我的hta:应用程序属性不起作用。如果我将它评论出来,那么他们会这么做有解决方案吗? – ndm13
不幸的是,我没有一个很好的解决方案。从IE10开始,似乎许多HTA属性不再被应用(在解析后的代码中,HTA标签被移动到了“body”)。在IE9中,他们似乎仍然受到尊重。我主要使用'IE = 9'而不是'IE = edge',它至少提供了现代事件处理和大部分HTML5标记,包括'svg'和'canvas'。 – Teemu
'IE = 9'完美无缺!我希望这一点在某些时候是固定的,但它似乎正在逐步淘汰这一点,这是值得怀疑的。如果下一个版本的Windows不支持HTA文件,我不会感到惊讶。 – ndm13