如何使this.getElementsByClassName('class')[0]为Internet 6-8工作?有什么填充材料可以解决这个问题吗?
发布于 2013-09-22 14:09:28
为了记录在案,旧浏览器仍然存在,因为人们一直在努力支持它们。
用于document.getElementsByClassName的填充
话虽如此,一个简短的google搜索可以让你找到这个链接:https://gist.github.com/eikes/2299607。
IE6/7的填充方式如下:
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的编辑:填充
您似乎希望在HTML元素上而不是在文档上调用getElementsByClassName方法。不幸的是,我不认为您可以在IE6和7(甚至8)上填充它,正如这个答案所暗示的:How to add my own methods to HTMLElement object?
您仍然可以使用document.evaluate来附加您想要的功能(提示:第二个参数是上下文节点;它应该是您的元素),但是您需要将调用代码更改为如下所示:
<div onclick="myPolyfill('class', this)[0].innerHTML = 'works'">https://stackoverflow.com/questions/18944659
复制相似问题