Javascript getElementByClass在getElementById等浏览器中使用是否安全?

Javascript getElementByClass在getElementById等浏览器中使用是否安全?,javascript,dom,Javascript,Dom,getElementByClass在getElementById等浏览器中使用是否安全 更新 目前正在使用: window.opener.document.getElementById 但是我想按类名引用对象(只有一个元素具有该类名)。IIRC,getElementsByClassName是在Firefox3、Safari 3.1中引入的,并且从一开始就在Chrome中。我不知道它是否/何时被添加到Opera中,但它在Internet Explorer中根本不存在。(尽管可以通过扩展DOM原

getElementByClass在getElementById等浏览器中使用是否安全

更新 目前正在使用:

 window.opener.document.getElementById

但是我想按类名引用对象(只有一个元素具有该类名)。

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


换句话说,如果您想要一个跨浏览器
getElementsByClassName
,您需要滚动您自己的或使用一个框架。

正如其他人所提到的,
getElementsByClassName
在Internet Explorer中不可用


有关如何在IE中实现功能的信息,请参阅的部分。

如果您确实想使用它,在使用之前,您可以测试验证对象是否支持GetElementsByCassName,如果浏览器不支持,则返回到函数的JS实现。

我建议使用prototype.JS或jQuery等包装库,它们都支持css选择器模型,并处理浏览器兼容性问题(IE6-7通常是更大的问题)

GetElementsByCassName
不幸的是,它在跨浏览器中不可靠。据介绍,Firefox、Opera、Safari和Chrome的最新版本目前都支持它,但在Internet Explorer或Konqueror中根本不支持

如果您想跨浏览器使用它,您必须为不支持它的浏览器提供自己的实现:


Safari和Chrome都使用WebKit作为HTML呈现引擎。没错,但它们使用不同的Javascript引擎。@Gumbo-当然,但这与中国茶叶的价格有什么关系?:-)看起来这只适用于IE8。你不能在IE6(或者,我相信是7)中扩展
元素.prototype
或者
HTMLDocument.prototype
。如果只有一个元素,那么通过ID访问它会更有效,因为在DOM中搜索特定的类并不理想,但是如果必须的话,我会推荐一个类似jQueryif的框架,如果它被加载到opener中。。。window.opener.$(“…”)有效;)其他人已经在“//your custom function”上做了很多工作,所以您不必自己去做。一个具体的例子是SizzleJS:
function getElementsByClassName(node,classname) {
    if (node.getElementsByClassName)
        return node.getElementsByClassName(classname);
    else {
        // your custom function
    }
}