Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript onbeforeunload和onunload让一个接一个地工作_Javascript_Onbeforeunload_Onunload - Fatal编程技术网

Javascript onbeforeunload和onunload让一个接一个地工作

Javascript onbeforeunload和onunload让一个接一个地工作,javascript,onbeforeunload,onunload,Javascript,Onbeforeunload,Onunload,我在卸载前打开和卸载方法方面遇到一些问题。我认为我在onbeforeunload的confirm方法设置为true之后才启动onload方法,从而正确地设置了代码。但遗憾的是,事实并非如此,即使onbeforeunload方法设置为false并且用户希望留在网站上,卸载方法也会启动。这是我正在编写的代码,自从我开始希望它能正常工作以来,它已经改变了很多。我确信它不是,因为它没有按照我想要的方式工作 var validNavigation = false; function wireUpEv

我在卸载前打开和卸载方法方面遇到一些问题。我认为我在onbeforeunload的confirm方法设置为true之后才启动onload方法,从而正确地设置了代码。但遗憾的是,事实并非如此,即使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();
 });

onbeforeunload
的工作方式与您想象的不同。您可以从处理程序返回一个字符串,该字符串将提示消息,或者
undefined
将不执行任何操作

window.onbeforeunload = goodbye;

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

相关:

那么就没有办法让它按照我想要的方式工作了?或者,如果按下取消键,可以用一种真正的方法来做什么?在你给我看的文章中,超时绑定可以这样工作吗?@GilbertV correct,你能知道导航是否被取消的唯一方法是运行
setTimeout
。你能举一个例子说明我是如何将它写进这篇文章的吗?我不太熟悉如何设置它,非常感谢。@GilbertV在我链接的问题的公认答案中有一个代码示例。