2

具体来说,我想覆盖getElementsByClassName除 IE 之外的每个浏览器中可用的功能。IE 使用 aquerySelectorAll代替。

Element.prototype.getElementsByClassName = function(className) {
    if(document.getElementsByClassName) {
        return this.getElementsByClassName(className);
    } else if(document.querySelectorAll) {
        return this.querySelectorAll(className);
    }
};

但是在 Firefox 中运行代码时,它会使用原生函数。如果 getElementsByClassName 不可用,这仍然可以用作跨浏览器解决方案并使用我的原型,还是有办法覆盖本机函数以便每次都使用我的代码?我可以将原型命名为类似的名称,但为了便于阅读,id 更喜欢保持相同的名称。

4

1 回答 1

1

我只是想将 Matt Ball 的答案添加为这个问题的真正公认答案。正如他所提到的,最好使用 polyfill 而不是我最初设置的方式。

if(!Element.prototype.getElementsByClassName) {
    Element.prototype.getElementsByClassName = function(className) {
        return this.querySelectorAll(className);
    }
}
于 2012-05-14T02:23:33.257 回答