getElementByClass是否可以安全地在诸如getElementById之类的浏览器中使用?

9 javascript dom

getElementByClass是否可以安全地在诸如getElementById之类的浏览器中使用?

目前更新使用:

 window.opener.document.getElementById
Run Code Online (Sandbox Code Playgroud)

但我想通过classname引用该对象(该类名只有1个元素).

Rud*_*ski 9

getElementsByClassName遗憾的是,跨浏览器不可靠.据Quirksmode称,目前最新版本的Firefox,Opera,Safari和Chrome都支持它,但在Internet Explorer或Konqueror中根本不支持.

如果你想跨浏览器使用它,你必须为那些不支持它的浏览器提供你自己的实现,比如在PPK的博客中:

function getElementsByClassName(node,classname) {
    if (node.getElementsByClassName)
        return node.getElementsByClassName(classname);
    else {
        // your custom function
    }
}
Run Code Online (Sandbox Code Playgroud)


Ben*_*ank 2

IIRCgetElementsByClassName在 Firefox 3、Safari 3.1 中引入,并且从一开始就出现在 Chrome 中。我不知道它是否/何时被添加到 Opera,但它根本不存在于 Internet Explorer 中。(尽管可以通过扩展 DOM 原型将其添加到 IE8;请参阅Grant 的回答。)

换句话说,如果您想要一个跨浏览器getElementsByClassName,您要么需要自己开发,要么使用框架。

  • 确实如此,但他们使用不同的 Javascript 引擎。 (2认同)