Не срабатывает метод closest на IE 11
_removeImage(e) {
const imageItem = e.target.closest('.add-images__item');
this.imagesRow.removeChild(imageItem);
if(!this.imagesRow.querySelector('.add-images__item')) {
this.imagesRow.classList.add('visually-hidden');
}
}
В IE11, который установлен у меня на рабочей машине (Windows 10) приведенный выше код работает корректно.
Когда тестируешь на browserstack, выбираешь Windows 10 -> IE 11
то приведенный ниже код не работает. Указывает что const imageItem = null
Вот и думаю что за ерунда и как это исправить.
Нашел вот такой код-полифил
(function(ELEMENT) {
ELEMENT.matches = ELEMENT.matches || ELEMENT.mozMatchesSelector || ELEMENT.msMatchesSelector || ELEMENT.oMatchesSelector || ELEMENT.webkitMatchesSelector;
ELEMENT.closest = ELEMENT.closest || function closest(selector) {
if (!this) return null;
if (this.matches(selector)) return this;
if (!this.parentElement) {return null}
else return this.parentElement.closest(selector)
};
}(Element.prototype));
и еще вот
(function(e){
e.closest = e.closest || function(css){
var node = this;
while (node) {
if (node.matches(css)) return node;
else node = node.parentElement;
}
return null;
}
})(Element.prototype)
Но как их сюда подставить? У меня просто проект большой, все в ООП. Этих
closest там много и что мне каждый раз прописывать этот фикс в месте где closest встречается? Меня еще смущает то, что это IIFE-функция и куда ее прописывать?
до этого просто не использовал такие полифиллы. Надеюсь на помощь