如何检查点击卸载确认框之前是否

时间:2015-06-18 07:06:45

标签: javascript jquery ajax javascript-events event-handling

我的代码就像这样



window.onbeforeunload = function() {
    $.post('ajax_url',$('form').serialize());
    return "are you sure";
}




现在我想在窗口关闭的情况下发送ajax请求,但是当他通过点击取消按钮停留在页面上时不会发送

2 个答案:

答案 0 :(得分:1)

将您的ajax移动到卸载事件处理程序

window.onunload = function() {
   $.post('ajax_url',$('form').serialize());
}

答案 1 :(得分:0)

Answer taken from this post.

在你的情况下,你可能会这样做:

setTimeout(function() {
   setTimeout(function() {
        $.post('ajax_url',$('form').serialize());
   }, 1000);
},1);
return 'are you sure';

第一个setTimeout方法中的代码延迟为1毫秒 这只是将功能添加到UI队列中。 由于setTimeout异步运行 Javascript interpreter will continue by directly calling the return statement,因此会触发浏览器模式对话框。

这将阻止UI队列,并且不会执行第一个setTimeout中的代码,直到模式关闭。

如果用户按下取消,则会触发另一个在大约一秒钟内触发的setTimeout。
如果用户确认为,则用户将重定向,并且永远不会触发第二个setTimeout。

相关问题