Javascript onbeforeunload和onunload让一个接一个地工作
我在卸载前打开和卸载方法方面遇到一些问题。我认为我在onbeforeunload的confirm方法设置为true之后才启动onload方法,从而正确地设置了代码。但遗憾的是,事实并非如此,即使onbeforeunload方法设置为false并且用户希望留在网站上,卸载方法也会启动。这是我正在编写的代码,自从我开始希望它能正常工作以来,它已经改变了很多。我确信它不是,因为它没有按照我想要的方式工作Javascript onbeforeunload和onunload让一个接一个地工作,javascript,onbeforeunload,onunload,Javascript,Onbeforeunload,Onunload,我在卸载前打开和卸载方法方面遇到一些问题。我认为我在onbeforeunload的confirm方法设置为true之后才启动onload方法,从而正确地设置了代码。但遗憾的是,事实并非如此,即使onbeforeunload方法设置为false并且用户希望留在网站上,卸载方法也会启动。这是我正在编写的代码,自从我开始希望它能正常工作以来,它已经改变了很多。我确信它不是,因为它没有按照我想要的方式工作 var validNavigation = false; function wireUpEv
var validNavigation = false;
function wireUpEvents() {
var leave_message = 'Leaving the page ?';
jQuery(function goodbye() {
jQuery(window).bind('onbeforeunload', function() {
setTimeout(function() {
setTimeout(function() {
jQuery(document.body).css('background-color', 'red');
}, 10000);
},1);
return leave_message;
});
});
function leave() {
if(!validNavigation) {
killSession();
}
}
//set event handlers for the onbeforeunload and onunloan events
window.onbeforeunload = goodbye;
window.onunload=leave;
}
// Wire up the events as soon as the DOM tree is ready
jQuery(document).ready(function () {
wireUpEvents();
});
onbeforeunload
的工作方式与您想象的不同。您可以从处理程序返回一个字符串,该字符串将提示消息,或者undefined
将不执行任何操作
window.onbeforeunload = goodbye;
function goodbye(e) {
if (!validNavigation) {
return leave_message;
} else {
return undefined;
}
}
相关:那么就没有办法让它按照我想要的方式工作了?或者,如果按下取消键,可以用一种真正的方法来做什么?在你给我看的文章中,超时绑定可以这样工作吗?@GilbertV correct,你能知道导航是否被取消的唯一方法是运行
setTimeout
。你能举一个例子说明我是如何将它写进这篇文章的吗?我不太熟悉如何设置它,非常感谢。@GilbertV在我链接的问题的公认答案中有一个代码示例。