我目前正在使用jquery-form-observe插件,它使用onbeforeunload提示用户存在“未保存”的更改。
但是,有一个场景需要在按钮点击时触发该功能:按钮点击最终导致页面更改,但我希望在他们开始进行此操作之前,向用户提示。
所以是否有一种通过jQuery或其他方式触发onbeforeunload的方法?
我目前正在使用jquery-form-observe插件,它使用onbeforeunload提示用户存在“未保存”的更改。
但是,有一个场景需要在按钮点击时触发该功能:按钮点击最终导致页面更改,但我希望在他们开始进行此操作之前,向用户提示。
所以是否有一种通过jQuery或其他方式触发onbeforeunload的方法?
我不知道是否有直接的方法来实现这个功能,但你可以自己模拟浏览器的确认框。这里有一个基于MSDN规范编写的简单函数:
function triggerBeforeUnload() {
var event = {};
handler(event);
if (typeof event.returnValue == 'undefined' ||
confirm('Are you sure you want to navigate away from this page?\n\n' + event.returnValue + '\n\nPress OK to continue, or Cancel to stay on the current page.')) {
// Continue with page unload
} else {
// Cancel page unload
}
}
编辑:在jquery.formobserver.js
中,在function beforeunload(e) { ... }
的定义之后,加入以下行:
handler = beforeunload;
window.onbeforeunload
已被替换为handler
。你可以使用 .trigger() 方法来完成:
$('button').click(function(){
$(window).trigger('beforeunload');
});
addEventListener
/attachEvent
附加事件处理程序,而不是直接通过window.onbeforeunload
。我猜你将不得不修改插件代码以获取对beforeunload
函数的引用。 - casablancahandler
重命名为不会与其他名称冲突的东西。 - casablanca