我已经得到了以下代码,可以将事件“传播”到我的所有js模块中。这是在尝试离开当前页面时触发的。问题是我提交表单(提交/取消/保存)时不会触发此操作。有没有办法检查?
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!';
}
});
}
...
答案 0 :(得分:2)
在提交/保存/取消之前,您可以调用以下代码,这将从所有侦听器中删除处理程序
$(window).off('webapp:page:closing');
答案 1 :(得分:2)
在表单提交解除绑定事件:
$("#frm").submit(function(e) {
$(window).off('beforeunload');
});
来自MDN:.off()方法删除附加了.on()
的事件处理程序答案 2 :(得分:1)
唯一可以想到的方法是:在包含表单的页面中,当它处理webapp:page:closing
事件时,如果提交了表单,则不应该阻止默认值(它可以通过页面中的变量进行跟踪。)