我想在用户导航到另一个页面时显示确认消息。
但是我遇到了一个问题,如果用户选择“留在当前页面上”,浏览器会将用户带到另一个页面。
请参阅下面的代码。
var onBeforeUnloadFired = false;
window.onbeforeunload = function(){
if ($("#aspnetForm").serialize() != form_original_data){
if(!onBeforeUnloadFired){
onBeforeUnloadFired = true;
event.returnValue = "No changes have been saved. Are you sure you wish to cancel?";
}
window.setTimeout("ResetOnBeforeUnloadFired()", 0);
}
};
function ResetOnBeforeUnloadFired() {
onBeforeUnloadFired = false;
}
由于
答案 0 :(得分:0)
不要知道这些变量上下变化。我做了:
window.onbeforeunload = function(){
if ($("#aspnetForm").serialize() != form_original_data){
return "No changes have been saved. Are you sure you wish to cancel?;"
}
}
答案 1 :(得分:0)
您使用的是哪种浏览器?如果不是IE使用
$(window).on('beforeunload', function() {
});
答案 2 :(得分:0)
我遇到了这个问题,我发现它与此问题有关:
onbeforeunload Message Appears Twice (Internet Explorer)
基本上使用setTimeout局部变量技巧暂时禁用处理程序掩盖了在我的代码中使用window.location =“some url”而不是window.location.href =“some location”的基本问题。
一旦我改变了
window.location = "..."
到
window.location.href = "..."
“留在当前页面”没有工作的问题消失了。