2011-12-08 50 views
0

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

这是我到目前为止有:

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

然而,这似乎只当用户输入在当前窗口的新网址的工作。

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

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

谢谢。

更新:

我觉得上面的JavaScript会为我工作,但是,这种情况在网站上每一个事件。例如,点击一个链接。

如果用户输入一个新的url或关闭窗口,是否可以只触发这个?

回答

1

问题是,当浏览器关闭时,您的中断操作的手段非常有限。有很多原因可能导致这种事件不可能陷入困境 - 比如说他们失去了电力或者网络连接 - 你的职位永远无法工作。我建议重新考虑你需要捕捉这个问题,然后解决你尝试以不同方式解决的问题。

+0

因此,当浏览器不关闭时可以发布帖子,但网站的窗口已关闭? – Brian

+0

+1我相信在窗口关闭发布的原因是纯粹的统计数据,该页面使用户离开网站,哪个页面上有用户“玩”,等等。 – ComputerSaysNo

+0

看到这里讨论beforeunload的局限性:http:// stackoverflow.com/questions/6063522/jquery-beforeunload –

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; 
}; 
+0

这是触发网站上的所有内容。例如,点击一个链接。 – Brian

0

这种方法

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

possibally不会重复关闭浏览器时,你正在进行的请求将被中断的工作。

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