获取onBeforeUnload以使用setTimeout

时间:2012-09-24 19:37:06

标签: javascript settimeout onbeforeunload

我正在尝试使用onbeforeunload来处理各种类型的计时器,但是当返回到位时我似乎无法启动它。我希望它可以使用计时器但由于某种原因计时器不工作。这是我正在使用的代码,感谢您的帮助,非常感谢。

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

2 个答案:

答案 0 :(得分:4)

onBeforeUnload不适用于setTimeoutonBeforeUnload执行后,onUnload将被触发,页面也会发生变化。这是在调用setTimeout回调之前发生的。

答案 1 :(得分:0)

@Jonh Kurlak是正确的,onbeforeunload确实可以与超时一起使用,以保护浏览器用户免受欺诈。

但是您可以做些什么!!!

for(var i = 0; i < 1000; i++){
    console.log(i);
}

您可以将此设置为循环打印到控制台以延迟页面的卸载,而循环的次数越多,等待的时间就越长。