如何this.getElementsByClassName('class')[0]
为 Internet Explorer 6-8 工作?有没有什么 polyfill 可以解决这个问题?
问问题
2345 次
1 回答
5
仅作记录,较旧的浏览器仍然存在,因为人们一直在努力支持它们。
用于 document.getElementsByClassName 的 Polyfill
话虽如此,简短的谷歌搜索可能会将您带到此链接: https ://gist.github.com/eikes/2299607
IE6/7 的 polyfill 是这样的:
if (d.evaluate) { // IE6, IE7
pattern = ".//*[contains(concat(' ', @class, ' '), ' " + search + " ')]";
elements = d.evaluate(pattern, d, null, 0, null);
while ((i = elements.iterateNext())) {
results.push(i);
}
}
基于document.evaluate
方法
https://developer.mozilla.org/en-US/docs/Web/API/document.evaluate
编辑: element.getElementsByClassName 的 Polyfill
您似乎想在 HTML 元素而不是文档上调用 getElementsByClassName 方法。不幸的是,我认为您不能在 IE6 和 7(甚至 8)上填充它,因为这个答案似乎暗示: 如何将我自己的方法添加到 HTMLElement 对象?
您仍然可以使用document.evaluate
来完成您想要的功能(提示:第二个参数是上下文节点;它应该是您的元素),但是您需要将调用代码更改为如下所示:
<div onclick="myPolyfill('class', this)[0].innerHTML = 'works'">
于 2013-09-22T14:09:28.690 回答