模态无法关闭,Firefox说ReferenceError:事件未定义

时间:2019-02-25 12:24:05

标签: javascript firefox modal-dialog popup referenceerror

该代码可用于所有浏览器但不适用于Firefox的问题是什么?触发模式后,将无法再关闭它。它说“ ReferenceError:事件未定义”。参见此处:Plunker snippet

发生错误的相关行(261)如下:

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

1 个答案:

答案 0 :(得分:0)

我看着你的柱塞。

错误是自我解释:在定义事件之前就已使用该事件,这就是为什么您收到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分配。

希望很清楚。