IE не поддерживает функции стрелок и forEach
в NodeList. Возвращаемое значение querySelectorAll
представляет собой NodeList.
Мы можем перенести синтаксис es6, например, функции стрелок, в es5, используя Babel и polyfill forEach
, чтобы сделать его совместимым с IE 11.
Polyfill:
var ctors = [typeof NodeList !== "undefined" && NodeList, typeof HTMLCollection !== "undefined" && HTMLCollection];
for (var n = 0; n < ctors.length; ++n) {
var ctor = ctors[n];
if (ctor && ctor.prototype && !ctor.prototype.forEach) {
ctor.prototype.forEach = Array.prototype.forEach;
if (typeof Symbol !== "undefined" && Symbol.iterator && !ctor.prototype[Symbol.iterator]) {
Object.defineProperty(ctor.prototype, Symbol.iterator, {
value: Array.prototype[Symbol.itereator],
writable: true,
configurable: true
});
}
}
}
es6 до es5:
var items = document.querySelectorAll(".accordion a");
function toggleAccordion() {
this.classList.toggle('active');
this.nextElementSibling.classList.toggle('active');
}
items.forEach(function (item) {
return item.addEventListener('click', toggleAccordion);
});