用户关闭窗口或浏览器时的Jquery任务

时间:2011-12-08 07:00:46

标签: jquery

当用户关闭浏览器或关闭窗口时,我正在尝试向我的服务器发送帖子。

这是我到目前为止所做的:

 $(window).unload(function(){
    $.post('/offline', {account_id: ACCOUNT_ID});
});

但是,当用户在当前窗口中输入新网址时,这似乎才有效。

除了用户在窗口中输入新网址外,我还需要在浏览器或窗口关闭时向服务器发送帖子。

任何人都知道问题是什么?

谢谢。

更新

我认为上面的javascript对我有用,但是,对于网站上的每个事件都会发生这种情况。例如,单击链接。

如果用户输入新网址或关闭窗口,是否可以仅触发此操作?

4 个答案:

答案 0 :(得分:1)

问题是,当浏览器关闭时,您可以使用非常有限的方法来中断该操作。有很多原因导致这样的事件无法捕获 - 比如他们失去了电力或网络连接 - 你的帖子永远不会有效。我建议你重新考虑一下你需要捕捉这个问题,并解决你试图以不同方式解决的问题。

答案 1 :(得分:0)

你可以使用

$(window).bind("beforeunload", function()

可能是How to capture the browser window close event?

的副本

答案 2 :(得分:0)

window.onbeforeunload = function (e) {
var message = "Your confirmation message goes here.",
e = e || window.event;
// For IE and Firefox
if (e) {
e.returnValue = message;
}

// For Safari
return message;
};

答案 3 :(得分:0)

这种方法不起作用,因为当浏览器关闭时,您的持续请求将被中断。

相反,您应该定义一个setInterval方法,在该方法中,您将在特定时间间隔后继续ping服务器,并且在服务器端,如果您在特定时间内没有收到ping,则用户将被视为已注销。