我有下面这段代码将'传播'一个事件给我所有的js模块。这是为了在试图离开当前页面时被触发。问题是,当表单提交时(提交/取消/保存),我不会触发它。有没有办法检查?重写jQuery自定义事件
main.js:
...
$(document).ready(function(){
$(window).on('beforeunload', function(){
var e = $.Event('webapp:page:closing');
$(window).trigger(e);
if (e.isDefaultPrevented()){
return e.message || 'You have unsaved stuff!';
}
});
}
...
我喜欢那个小包装的事件处理程序。我可能不得不使用类似的东西。现在我使用一个队列系统,其优点是处理程序不必检查事件是否已被其他事件阻止。 (如上所述,如果您有多个处理程序阻止默认设置并且设置'message',则最后一个获胜;我的第一个处理程序会([和其他人不会被调用]),但不确定有多重要。 ) –
我喜欢你的方法。关于队列应该如何工作的一般指示?谢谢 – Sebastian
只是一个处理程序的列表(我不应该真的称它为队列),它由真正的'beforeunload'处理程序按顺序调用。 –