Polyfill for getElementsByClassName for particular uses

Polyfill for getElementsByClassName for particular uses

本文关键字:for uses particular getElementsByClassName Polyfill      更新时间:2023-09-26

如何使this.getElementsByClassName('class')[0]适用于Internet Explorer 6-8?是否有任何填充物可以解决此问题?

只是为了记录,旧的浏览器仍然存在,因为人们一直在努力支持它们。

Polyfill for document.getElementsByClassName

话虽如此,一个简短的谷歌搜索可能会将您带到此链接: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

编辑:Polyfill for element.getElementsByClassName

您似乎想在 HTML 元素而不是文档上调用 getElementsByClassName 方法。不幸的是,我认为您无法在IE6和7(甚至8)上填充它,因为这个答案似乎表明:如何将我自己的方法添加到 HTMLElement 对象中?

您仍然可以使用 document.evaluate 来完善所需的功能(提示:第二个参数是上下文节点;它应该是您的元素),但您需要将调用代码更改为如下所示的内容:

<div onclick="myPolyfill('class', this)[0].innerHTML = 'works'">