use*_*274 4 javascript internet-explorer
如何this.getElementsByClassName('class')[0]为Internet Explorer 6-8工作?是否有任何polyfill可以解决此问题?
仅作记录,较旧的浏览器仍然存在,因为人们不断努力支持它们。
用于document.getElementsByClassName的Polyfill
话虽这么说,但简短的Google搜索可能已将您带到此链接: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);
}
}
Run Code Online (Sandbox Code Playgroud)
根据document.evaluate方法
https://developer.mozilla.org/zh-CN/docs/Web/API/document.evaluate
编辑:element.getElementsByClassName的Polyfill
您似乎想在HTML元素而不是文档上调用getElementsByClassName方法。不幸的是,我不认为您可以在IE6和7(甚至8)上进行多填充,因为这个答案似乎暗示了: 如何向HTMLElement对象添加我自己的方法?
您仍然可以document.evaluate用来完成所需的功能(提示:第二个参数是一个上下文节点;它应该是您的元素),但是您需要将调用代码更改为如下所示:
<div onclick="myPolyfill('class', this)[0].innerHTML = 'works'">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2043 次 |
| 最近记录: |