Модал не может быть закрыт, Firefox сообщает ReferenceError: событие не определено - PullRequest
0 голосов
/ 25 февраля 2019

Что в этом коде не так, что он работает для всех браузеров, но не для Firefox?Когда модальный режим запускается, он больше не может быть закрыт.Он говорит: «ReferenceError: событие не определено».см. здесь: Фрагмент плункера

Соответствующая строка (261), в которой возникает ошибка, такова:

function dismissModal() {
  bindEvents(_dismiss, function(that) {
  hideModal(event);
  });
 }

1 Ответ

0 голосов
/ 25 февраля 2019

Я посмотрел на ваш Plunker.

Ошибка самоочевидна: событие используется до того, как оно было определено, поэтому вы получаете ReferenceError, потому что менеджер области видимости сходит с ума.

Ваш dismissModal метод вызывает bindEvents, передавая два параметра, второй кажется обратным вызовом.

Это подтверждается, глядя на вашего Плункера на определение bindEvents, а именно:

function bindEvents(el, callback) {
  for (i = 0; i < el.length; i++) {
    if (window.CP.shouldStopExecution(0)) break;
    (function(i) {
      el[i].addEventListener('click', function(event) {
        callback(this, event);
      });
    })(i);
  }
  window.CP.exitedLoop(0);
}

Как видите, вторым параметром является callback.Этот callback вызывается, когда выполняется щелчок по определенному элементу, и вызывается с двумя параметрами:

callback(this, event);

Возвращаясь к вашему коду, мы видим, что событие должно быть вторымпараметр вашего обратного вызова:

function dismissModal() {
  bindEvents(_dismiss, function(that, event) {
    hideModal(event);
  });
}

Таким образом, он определяется (как аргумент обратного вызова) и присваивается bindEvents при щелчке элемента.

Надеюсь, это понятно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...