具体地说,我想覆盖除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不可用,这是否仍然可以作为跨浏览器解决方案,并使用我的原型,或者是否有方法覆盖本机函数,以便每次都使用我的代码?我可以将原型命名为类似的名称,但为了便于阅读,我倾向于保持不变。
发布于 2012-05-14 10:23:33
我只是想把Matt Ball的答案添加到这个问题中,作为一个真正被接受的答案。正如他提到的,最好使用polyfill而不是我最初设置的方式。
if(!Element.prototype.getElementsByClassName) {
Element.prototype.getElementsByClassName = function(className) {
return this.querySelectorAll(className);
}
}
https://stackoverflow.com/questions/10576731
复制相似问题