2011-10-14 78 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原型那裏。