Задать вопрос
@ArutaGerman

Как правильно настроить polyfill для closest в IE10-11?

Нашел полифил для closest. Но я тупой наверное он не хочет работать.
Пробовал вставлять через ссылку

- тоже не работает.

Почему всё это не работает в IE10-11?

Код для matches:
(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);


Код для polyfill:
if (!Element.prototype.matches) {
  Element.prototype.matches =
    Element.prototype.matchesSelector ||
    Element.prototype.mozMatchesSelector ||
    Element.prototype.msMatchesSelector ||
    Element.prototype.oMatchesSelector ||
    Element.prototype.webkitMatchesSelector ||
    function(s) {
      var matches = (this.document || this.ownerDocument).querySelectorAll(s),
        i = matches.length;
      while (--i >= 0 && matches.item(i) !== this) {}
      return i > -1;
    };
}


Мой код, который работает везде кроме IE10:
let descList = document.querySelectorAll('.upsale__block__bot-right__title-wrap');
	descList.forEach(function(descF) {
	descF.onclick = function viewblock(){  //кнопка/блок, по которой нажимаем
		let listF = this.closest('.upsale__block__sub-right-wrap'); 
let listTest = this.closest('.upsale__block-wrap');
		let listTestF = listTest.getElementsByClassName('.upsale__block__bot-right__sub-wrap');
		let descshow = listF.children[1]; //выбор блока, который нужно скрыть/показать
		if (descshow.classList == "dflex"){			
			listTestF.classList.toggle("dnone");  //удаляем класс
		} else {
			descshow.classList.toggle("dnone");  //удаляем класс			
		}		
	};
});
  • Вопрос задан
  • 476 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
@ArutaGerman Автор вопроса
Хоть ответа я не получил, но вот что значит - отпустить проблему. Пол дня бился и не понимал, что да как, а оказалось, что я надумал много чего, потому что в сети куча примеров где вставлены классы, теги и т.д. в полифил.
Сел через 2 часа и всё получилось - заработало, потому что я не модифицировал в этот раз ничего и добавил 3 полифила нужных, а не 2.

Оказалось, что всё работает "из коробки":)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А разве IE10 знает про let?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы