2011-10-14 47 views
1
<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中它不起作用。为什么?IE只有JavaScript错误Object.prototype和getElementsByTagName

任何帮助,将不胜感激。

+0

可能的相关答案:http://stackoverflow.com/questions/3968416/ie-javascript-error-object-doesnt-support-this-property-or-method-within-jquer – Widor

+0

在IE 9.0.3中正常工作。 – Dennis

回答

1

在IE8-中,links instanceof Object返回false。在IE9中,这工作正常。

这意味着.size不适用于links。您应该扩展HTMLCollection,因为那是getElementsByTagName在IE8中返回的值。请注意,这又不适用于其他浏览器(IE9,Chrome等),因为它们使用NodeList

你基本上不应该扩展宿主对象,但是这对IE8有效:http://jsfiddle.net/wss6K/4/

HTMLCollection.prototype.size = function(){ 
    return this.length; 
}; 

在IE7中,links.constructor === undefined所以我不认为你可以延长links原型那里。