在这里稍微修改一下我的答案,因为您已经提到了服务器端超时……
您唯一可以在客户端做的事情是使用 onbeforeunload 事件来调用注销页面(如果用户没有单击文档中的链接..)
不幸的是,浏览器的后退、前进和刷新按钮会导致注销...
要解决此问题,请让您的 logout.php(自动注销页面)休眠 20-30 秒,然后检查最后一次印象是否低于30-45 秒前在注销之前...</p>
只需将此添加到文档头部的脚本标签,然后将“logout.php”更改为您想要的任何内容... * 如果您使用链接以外的其他内容,您可能还需要编辑 window.onload 函数以正确添加 onclick 处理程序导航…。
var xmlhttp=false; var target; var combo;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } }
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
var dologout = true;
var logouturl = 'logout.php';
window.onbeforeunload = function() {
if (dologout) {
xmlhttp.open("POST", logouturl, true);
xmlhttp.send(null);
}
}
window.onload = function() {
for (i=0;i<document.links.length;i++)
document.links[i].setAttribute("onclick","dologout = false;");
}
本质上,这只是将 onclick 事件附加到所有 document.links 并在单击文档链接时将“dologout”标志更改为 false ...
如果在 onbeforeunload 事件触发时 dologout 标志为真,它会发送一个帖子到 'logouturl' / 'logout.php' ...