1

我在卸载前打开和卸载方法时遇到了一些问题。我以为我根据 onload 方法设置了正确的代码,只有在 onbeforeunload 的确认方法设置为 true 后才会启动。但遗憾的是,情况并非如此,即使 onbeforeunload 方法设置为 false 并且该人想留在网站上,卸载方法仍在启动。这是我正在处理的代码,自从我开始希望它没问题以来,它已经发生了很大变化。我确信它不是因为它没有按照我想要的方式工作。

 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();
 });
4

1 回答 1

3

onbeforeunload不像你想象的那样工作。您可以从处理程序返回一个字符串,它会提示一条消息,或者undefined什么都不做。

window.onbeforeunload = goodbye;

function goodbye(e) {
    if (!validNavigation) {
        return leave_message;
    } else {
        return undefined;
    }
}

相关:如何知道用户是否在 Javascript onbeforeunload 对话框上单击了取消?

于 2012-09-24T18:37:34.357 回答