大家好,我有一份代码,这是其简化版:
<!DOCTYPE html>
<html>
<head>
<title>_</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<script>
Object.defineProperty(
Array.prototype,'len',{get:
function(){return this.length}
});
function pop(){
ary=['abc',123];
d1.innerText=ary.len;
}
</script>
</head>
<body onload="pop()">
<div id="d1">d1</div>
</body>
</html>
我的设置是:
- Chrome v40.0.2214.94 m
- IE v11.0.9600.16428
- IIS v7.5.7600.16385
当我打开任何一个浏览器并打开上面的文件时:
IE ==> C:\site\proj\default.htm
Chrome ==> file:///C:/site/proj/default.htm
两个浏览器都显示正确的结果:2
...
但当我这样打开文件时:
IE ==> http://portal/proj/default.htm
Chrome ==> http://portal/proj/default.htm
其中portal是IIS中设置的本地主机站点名称。
IE 显示 undefined
并抛出控制台错误:
对象不支持属性或方法 'defineProperty'
而 Chrome 仍然正确地显示 2
。
所以,我的问题是...
IIS 是否更改了 IE 的“兼容模式”或其他设置,还是我只需要升级到更新版本的 IIS?
思考中...
我第一次使用 .hta
文件,并且当我尝试访问数组上的 .indexOf
时,我得到了类似上面的错误消息...
问题是,我想将新的 indexOf
属性设置为可枚举,所以我使用了 Object.defineProperty
将属性设置为可枚举,这就是我来到 Stack' 上的原因...
defineProperty
在IE11中明确受支持,所以肯定还有其他问题。 - adeneo.hta
,而是default.htm
。在我写这篇文章的同时,我打开了另外5个标签页来尝试学习有关x-ua-compatible
头部的内容,这是我目前没有在任何我的.hta
文件上使用的内容,以及如何在Quirks mode中运行它们?然而,我的问题是为什么上述.htm
文件通过IIS无法在IE中正确编码...... - LostInCyberSpaceindexOf
和defineProperty
。 - adeneo