我有下面這段代碼將'傳播'一個事件給我所有的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'處理程序按順序調用。 –