IE只有JavaScript错误Object.prototype和getElementsByTagName

时间:2011-10-14 11:01:24

标签: javascript internet-explorer dom

<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中它不起作用。为什么呢?

任何帮助都将不胜感激。

1 个答案:

答案 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的原型。