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



我的代码是这样的:

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

现在,如果窗口关闭,我想发送一个ajax请求,但当他通过单击取消按钮停留在页面上时,我不想发送。

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

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

答案取自这篇文章。

在您的情况下,您可以执行以下操作:

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,该设置在大约一秒内触发。
如果用户确认为 ok,则用户将重定向,并且永远不会触发第二个 setTimeout。

相关内容

  • 没有找到相关文章

最新更新