在IE9中防止onbeforeunload对话框

时间:2012-04-03 00:42:16

标签: javascript jquery internet-explorer-9

我在IE9中遇到onbeforeunload的问题 - 当下面的代码运行时,它会重复显示一个对话框,询问您是要留下还是离开页面。

我修改了我的代码,以防止基于this thread的默认功能无效。

对此的任何帮助都将非常感激。

代码示例:

window.onbeforeunload = function(e) {
    e.preventDefault();
    e.returnValue = false;
    saveFormData();
    return null;
}

function saveFormData() {
    $.post("<?php echo site_url('resume/cleanup'); ?>", { resume_id: "<?php echo $this->session->userdata('resume_id'); ?>" } );
}

2 个答案:

答案 0 :(得分:3)

当页面卸载时,您无法发送AJAX请求,因为大多数浏览器会阻止它。如果有脏数据,您应该要求用户留在页面上。这就是你应该从onbeforeunload处理程序

做的所有事情

尝试使用您的代码而不调用$ .post,它应该按预期运行

答案 1 :(得分:1)

您在onbeforeunload处理程序中唯一允许的操作是显示一个对话框。您特别获得任何额外的时间来执行可能需要一段时间才能完成的任务,例如解雇HTTP请求 - 用户要求离开您的站点;除了礼貌地问他们是否想要留下之外,你不能让他们留下来(即使你在清理的时候)。

https://developer.mozilla.org/en/DOM/window.onbeforeunload