如何在卸载窗口之前调用一个函数


jQuery: How to call a function before unload window

我想在关闭窗口之前调用一个函数。

例如,我想在关闭页面之前调用ajax。我正在使用以下代码,但它不工作。

$(window).bind('beforeunload', function(){
        $.ajax({
        url:'logout.php',
        type:'POST'
          });
});

在关闭窗口之前调用函数的最好方法是什么?

您的代码很可能正在运行,但由于它启动了一个异步 ajax请求,并且浏览器在触发onbeforeunload后立即删除了页面,因此请求可能永远不会被发送(或者即使发送了,也可能被中止)。

onbeforeunload的事件处理程序只允许做非常有限的一组事情(列表因浏览器而异,并且列表经常随着浏览器更新而变化)。出于这个原因,将onbeforeunload用于除之外的任何目的,这是它的预期目的,给您最后的机会警告用户离开页面会丢失信息,这不是一个好主意。

您编写的代码只是进行ajax调用,但甚至在调用之前,您的窗口就会退出。即使请求被发送,它也可能在中间被终止。

试试下面的代码:

   function WinClose() {
             $.ajax({
               url:'logout.php',
               type:'POST'
             });
             return false;
    }
    window.onbeforeunload = WinClose;

<head>

中编写此代码