该代码可用于所有浏览器但不适用于Firefox的问题是什么?触发模式后,将无法再关闭它。它说“ ReferenceError:事件未定义”。参见此处:Plunker snippet
发生错误的相关行(261)如下:
function dismissModal() {
bindEvents(_dismiss, function(that) {
hideModal(event);
});
}
答案 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
分配。
希望很清楚。