具体来说,我想覆盖IE以外的每个浏览器中可用的getElementsByClassName
函数。 IE使用querySelectorAll
代替。
Element.prototype.getElementsByClassName = function(className) {
if(document.getElementsByClassName) {
return this.getElementsByClassName(className);
} else if(document.querySelectorAll) {
return this.querySelectorAll(className);
}
};
但是在Firefox中运行代码时,它会使用本机函数。这仍然可以作为跨浏览器解决方案使用我的原型,如果getElementsByClassName不可用,或者有没有办法覆盖本机函数,所以我的代码每次使用?我可以将原型命名为类似的名称,但为了便于阅读,id更喜欢保持原样。
答案 0 :(得分:1)
我只是想将Matt Ball的答案添加为这个问题的真正接受答案。正如他所提到的,最好使用polyfill而不是我最初设置的方式。
if(!Element.prototype.getElementsByClassName) {
Element.prototype.getElementsByClassName = function(className) {
return this.querySelectorAll(className);
}
}