оживить скрипт в IE

170
24 апреля 2018, 02:33

Доброго дня! Скрипт работает везде, кроме IE. Помогите разобраться. Что ему не нравится?

const buttons = document.querySelectorAll(`button[data-modal-trigger]`);
for(let button of buttons) {
modalEvent(button);
}
function modalEvent(button) {
button.addEventListener('click', () => {
    const trigger = button.getAttribute('data-modal-trigger');
    const modal = document.querySelector(`[data-modal=${trigger}]`);
    const contentWrapper = modal.querySelector('.content-wrapper');
    const close = modal.querySelector('.close');
    close.addEventListener('click', () => modal.classList.remove('open'));
    modal.addEventListener('click', () => modal.classList.remove('open'));
    contentWrapper.addEventListener('click', (e) => e.stopPropagation());
    modal.classList.toggle('open');
});
}

Полный пример тут

Answer 1

Вот, что нашел из того, что не поддерживается в IE в вашем коде:

  1. У вас используются кавычки из шаблонных строк из ES6 - `
  2. конструкции for of
  3. стрелочные функции
  4. Также заменены let и const, они имеют базовую поддержку в IE-11, но не полностью поддерживаются, так что на всякий случай заменил их на var.

Вот код переделанный:

const buttons = document.querySelectorAll('button[data-modal-trigger]');
for(let i = 0; i<buttons.length; i++) {
    modalEvent(buttons[i]);
}
function modalEvent(button) {
button.addEventListener('click', function() {
    const trigger = button.getAttribute('data-modal-trigger');
    const modal = document.querySelector('[data-modal=' + trigger + ']');
    const contentWrapper = modal.querySelector('.content-wrapper');
    const close = modal.querySelector('.close');
    close.addEventListener('click', function() {modal.classList.remove('open')});
    modal.addEventListener('click', function() {modal.classList.remove('open')});
    contentWrapper.addEventListener('click', function(e) {e.stopPropagation()});
    modal.classList.toggle('open');
});
}

И полный код на jsfiddle: https://jsfiddle.net/wur8gnpe/4/

Правда там теперь некорректно работает анимация, но это надо смотреть поддержку css браузера.

READ ALSO
Скрыть элементы

Скрыть элементы

Есть код такого плана, в поле "Тип вмешательства" при выборе ККГ должны открывать допполя, при выборе другого значения, скрываться, но что-то...

209
TextAutoComplete съезжает при скролле

TextAutoComplete съезжает при скролле

Привет, пришел на новый проект, используется angular 13

147
Узнать позицию курсора в редакторе TinyMce

Узнать позицию курсора в редакторе TinyMce

Пишу плагин для редактора TinyMceВ документации к написанию плагинов в примере используется метод editor

141
Что здесь ошибка?

Что здесь ошибка?

Я начал изучать JS и в самом начале есть проблема, пишу на notepad++ и слово write не меняет цвет (а должен!)Заранее спасибо

136