<script type="text/javascript">
Object.prototype.size = function(){
return this.length;
};
window.onload = function(){
var links = document.getElementsByTagName("A");
alert(links.size());
};
</script>
<a href="#">test1</a>
<a href="#">test2</a>
<a href="#">test3</a>
<a href="#">test4</a>
适用于Firefox,Chrome和Opera。但在IE中它不起作用。为什么呢?
任何帮助都将不胜感激。
答案 0 :(得分:1)
在IE8中,links instanceof Object
返回false
。在IE9中,这很好用。
这意味着.size
上无法使用links
。您应该扩展HTMLCollection
,因为这是{8}在IE8中返回的内容。请注意,这在其他浏览器(IE9,Chrome等)中无效,因为它们使用getElementsByTagName
。
您基本上不应该扩展主机对象,但这适用于IE8:http://jsfiddle.net/wss6K/4/。
NodeList
在IE7中,HTMLCollection.prototype.size = function(){
return this.length;
};
所以我认为你不能在那里扩展links.constructor === undefined
的原型。