Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jquery/Javascript在浏览器关闭或选项卡关闭时执行注销_Javascript_Jquery_Ajax_Browser_Logout - Fatal编程技术网

使用jquery/Javascript在浏览器关闭或选项卡关闭时执行注销

使用jquery/Javascript在浏览器关闭或选项卡关闭时执行注销,javascript,jquery,ajax,browser,logout,Javascript,Jquery,Ajax,Browser,Logout,我需要在浏览器关闭或选项卡关闭时注销用户。我已尝试使用以下代码,除了以下代码外,它工作正常: 1.)当我单击浏览器刷新按钮时,它仍然会注销 2.)当我在浏览器中更改URL并按enter键时,它仍然会注销 以上两种情况都是不可取的,我想预防。有人能建议怎么做吗? 这是我的剧本: var validNavigation=false; 函数wireUpEvents(){ window.onbeforeunload=函数(e){ 如果(!有效航行){ endSession(); } } //点击服务器

我需要在浏览器关闭或选项卡关闭时注销用户。我已尝试使用以下代码,除了以下代码外,它工作正常: 1.)当我单击浏览器刷新按钮时,它仍然会注销 2.)当我在浏览器中更改URL并按enter键时,它仍然会注销 以上两种情况都是不可取的,我想预防。有人能建议怎么做吗? 这是我的剧本:

var validNavigation=false;
函数wireUpEvents(){
window.onbeforeunload=函数(e){
如果(!有效航行){
endSession();
}
}
//点击服务器并使会话无效
函数endSession(){
$.ajax({
url:“performLogout…”,
键入:“获取”,
async:false,
成功:函数(响应){},
错误:函数(响应){}
});
} 
//点击F5
document.onkeydown=函数disableKeys(){
if(事件类型!=“未定义”){
如果(event.keyCode==116){
有效航行=真;
event.keyCode=0;
//return false;//如果要禁用刷新,则返回false
}
}
};
//单击页面中的所有链接附加事件
$(“a”)。在(“单击”,函数(){
有效航行=真;
});
//为页面中的所有表单附上事件提交
$(“表格”)。在(“提交”,函数()上{
有效航行=真;
});
//为页面中的所有输入附加事件单击
$(“输入[type=submit]”)。在(“单击”,函数(){
有效航行=真;
});
$(“选择#选择id”)。在(“更改”,函数()上){
有效航行=真;
});
}
//DOM树准备就绪后,立即连接事件
$(文档).ready(函数(){
wireUpEvents();

});对于数字2,无法区分关闭选项卡的用户和键入要访问的新URL的用户。我想问你的问题是,如果他们在地址栏中键入
google.com
,与他们关闭标签并导航的效果相同,你为什么不将他们注销?你有没有想过他们登录,在你的网站上打开一个新的标签,然后关闭那个标签。原始选项卡仍处于打开状态,但是否要将其注销?在假设用户的意图之前,先考虑边缘情况

对于您的场景,如果每个会话只有一个选项卡,您可能希望查看哪些选项卡仅在本地保存信息,直到浏览器窗口关闭。所有新选项卡都将是会话的新实例

也许一个好的方法是,每当用户离开页面时,将会话标记为
暂停
,无论加载新页面时处于何种状态,然后
恢复
会话。在此环境中,您需要在服务器上实现简单的垃圾收集,以丢弃旧会话


总之,除非你100%确定用户已经注销,否则不要注销他们。在您这方面多做一点努力几乎总是值得获得更好的用户体验。另一方面,你会失去有价值的用户。

你之前有没有做过这方面的研究@CBroe我确实读了几篇帖子,没有找到一个肯定的答案。我问的原因是,是否有人知道这个问题是否有解决方案或解决方法来完成我的需求。谢谢,这应该已经告诉你,没有可靠的,跨浏览器的方式来实现这一点。谢谢你的答复。你知道1点吗?