Показать сообщение отдельно
  #1 (permalink)  
Старый 12.11.2018, 16:33
Кандидат Javascript-наук
Отправить личное сообщение для yaparoff Посмотреть профиль Найти все сообщения от yaparoff
 
Регистрация: 26.04.2016
Сообщений: 106

Метод closest не срабатывает на IE 10,11 (?)
Не срабатывает метод 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-функция и куда ее прописывать?

до этого просто не использовал такие полифиллы. Надеюсь на помощь
Ответить с цитированием