有谁知道HTA文件使用的是什么版本的JavaScript.
目前正在创建一些脚本文件 – 并尝试使用Object.defineProperty
当作为HTA运行时 – 它会错误地指出Object不支持此属性或方法.我将它作为HTM文件运行只是为了检查 – 并且根本没有问题.
所以我只能假设mshta.exe使用较旧的JavaScript引擎.任何人都能证实这一点吗?
解决方法:
使用的JavaScript(或JScript)版本取决于三件事:安装的Interner Explorer版本,使用的文档类型声明(DTD)和x-ua兼容的元标记.
虽然HTA由mshta.exe运行,但是IE为应用程序提供了JavaScript和渲染引擎,因此后来关于JS版本的所有内容都代表了盒子模型,定位,CSS等,以及可用的API和HTML元素.
如果您的系统中安装了IE11,则可以使用<!DOCTYPE html>来使用最新版本的JavaScript.和< meta http-equiv =“x-ua-compatible”content =“ie = edge”/>.
当然,将内容设置为IE = edge不会覆盖已安装的IE的旧版本,而是使用最新的可用模式.在使用较新的IE运行时,您可以使用IE版本号来降级应用程序而不是边缘.
省略DTD应该总是删除应用程序以在Quirks模式下运行,在HTA类似于IE5的情况下.但是,在这种情况下,文档模式可以用x-ua兼容进行更改,但至少在IE8和…中存在一些不一致. 9.如果不需要Quirks模式,使用DTD总是最安全的.
使用DTD,但没有x-ua兼容的元标记HTA在IE7标准模式下运行(不支持object.defineProperty(),它在IE9中引入).
您可以在MSDN:Introduction to HTML Applications (HTAs)上阅读有关该主题的更多信息
可以在MSDN上找到JS和CSS的IE版本信息:
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);
请注意,这仅显示浏览器提供的最新版本,文档模式对返回值没有影响.