Modal cannot be closed, Firefox says ReferenceError: event is not defined
Modal cannot be closed, Firefox says ReferenceError: event is not defined
这段代码有什么问题,它适用于所有浏览器但不适用于 Firefox?当一个模式被触发时,它不能再被关闭。它说 "ReferenceError: event is not defined"。看这里:Plunker snippet
错误发生的相关行(261)是这样的:
function dismissModal() {
bindEvents(_dismiss, function(that) {
hideModal(event);
});
}
我看了你的 Plunker。
错误不言自明:事件在定义之前就被使用了,这就是为什么你会得到 ReferenceError,因为范围管理器正在变得疯狂。
您的 dismissModal
方法调用 bindEvents
传递两个参数,第二个似乎是回调。
通过查看您的 Plunker 中 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
分配。
希望清楚。
这段代码有什么问题,它适用于所有浏览器但不适用于 Firefox?当一个模式被触发时,它不能再被关闭。它说 "ReferenceError: event is not defined"。看这里:Plunker snippet
错误发生的相关行(261)是这样的:
function dismissModal() {
bindEvents(_dismiss, function(that) {
hideModal(event);
});
}
我看了你的 Plunker。
错误不言自明:事件在定义之前就被使用了,这就是为什么你会得到 ReferenceError,因为范围管理器正在变得疯狂。
您的 dismissModal
方法调用 bindEvents
传递两个参数,第二个似乎是回调。
通过查看您的 Plunker 中 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
分配。
希望清楚。