Javascript 如何在用户离开页面之前与服务器同步并清除会话?
是否有任何方法可以检测用户何时离开页面,无论是关闭浏览器、在地址栏中输入新URL、单击重定向到其他域的链接等 其主要目的是执行一些活动,例如:Javascript 如何在用户离开页面之前与服务器同步并清除会话?,javascript,ajax,session,local-storage,Javascript,Ajax,Session,Local Storage,是否有任何方法可以检测用户何时离开页面,无论是关闭浏览器、在地址栏中输入新URL、单击重定向到其他域的链接等 其主要目的是执行一些活动,例如: 与服务器同步驻留在客户端的某些数据 清除服务器会话 我正在尝试窗口的卸载和卸载前事件,并阅读其他问题,如: // 但是我没有找到我期望的答案 下面是一个简化的js代码片段,以了解我的尝试: window.onunload = function(){ if (theConditionThatINeed){ doThings();
- 与服务器同步驻留在客户端的某些数据
- 清除服务器会话
window.onunload = function(){
if (theConditionThatINeed){
doThings();
SyncWithServerAndAbandonSession(url, localObjects);
}
else {
doNothing();
}
}
我不想在用户离开之前显示任何形式的确认,因此我认为onbeforeunload在这里对我没有帮助
假设答案是“没有办法做这样的事情”,那么建议采用什么方法来完成我想要的同步和会话清除
我支持的主浏览器是IE>=7正如您已经阅读的,无法可靠地检测用户是否离开您的页面。 通常,在客户端存储任何非同步状态都不是一个好的做法。浏览器很容易关闭或崩溃 您可以通过javascript向自己发送ajax keepalive消息,以防用户在您的页面上执行任何操作。同样,非常不可靠,浪费和黑客。 短时间超时后自动同步 看一看ful的web应用程序。这个概念很有趣,而且从表面上讲,不鼓励在服务器上保留状态信息。您也可以将此应用于客户端 这通常会导致在URL中保留状态信息。URL告诉服务器服务请求所需的任何信息,它不应该需要任何先前活动的内存(会话)。 我尝试在会话中只保留用户标识信息。我也会去掉这个,但是一些工具和lib需要会话中的用户