当我的应用程序中有未保存的更改时,我想确保用户不会在没有看到确认对话框的情况下关闭窗口/选项卡。
我写了这个:
var _beforeWindowUnload = function(event) {
if (documentHasUnsavedChanges()) {
// document is dirty
var message = "Unsaved changes will be lost";
event.returnValue = message;
return message;
} else {
// document is clean
event.returnValue = null;
return null;
}
}
window.addEventListener('beforeunload', _beforeWindowUnload, false);
问题是当文档干净时我仍然看到带有“空”消息的对话框。我也尝试过
true
和 false
但没有运气。
我还尝试过在文档干净时不返回任何内容,但是当文档变脏时它不会显示消息。这很奇怪!
如何在仍然有事件监听器的情况下有选择地避免确认对话框?
注 1:MDN 说了以下但显然不是真的?:
当此事件返回非空值时,提示用户确认页面卸载。在大多数浏览器中,事件的返回值显示在这个对话框中。
注 2:这应该适用于相对较新的浏览器。