在卸载之前避免对话框..有可能吗?

时间:2013-07-31 12:08:31

标签: javascript jquery

我正在使用jQuery bind:

$(window).bind('beforeunload', function() {
   //code
   return "";
   }

如果我不返回“”,它在mozilla firefox,IE8中运行正常。它没有给出一个警告框,上面写着“你确定要离开这个页面吗?” 但是在google chrome中,beforeunload事件在没有返回“”语句的情况下不起作用。

如果我使用return“”,它会在所有broswers中提供一个警告框。

我不想要对话框,我希望beforeunload事件能够正常工作。请帮忙。请建议是否有其他替代解决方案。感谢。

1 个答案:

答案 0 :(得分:1)

onbeforeunload在浏览器中没有一致的行为

您应该将所有ajax调用设置为您在beforeunload事件中调用的函数内的async false,然后尝试这个丑陋的黑客攻击:

$(window).on('beforeunload', function (e) {
    if (e.originalEvent) 
       //Call function for updating omniture site 
    else  //this is to provide enough time to all your other requests to be send
    $.get("", {
        async: false
    });
    $(this).trigger('beforeunload'); //will create kind of infinite loop
    //this is an ugly hack because many useless request will be send (but nowhere)
}

测试并让我知道。