我想在我的网站上显示所有用户在线(实时;像任何聊天模块一样)。我正在使用下面提到的脚本来执行此操作。
HTML:
<body onbeforeunload="Unload();" onmousedown="checkfunction();">
</body>
Javascript:
var doClose = false;
document.onkeydown = checkKeycode;
function checkKeycode(e){
var keycode;
if (window.event)
keycode = window.event.keyCode;
else if (e)
keycode = e.which;
if(keycode == 17 ){
doClose = true;
}
}
function checkfunction(){
doClose = true;
}
function Unload(){
if(!doClose){
set_user_log_out(<?php ehco $u_id ?>);
}
}
功能是set_user_log_out
设置用户登出。
在上面提到的 java 脚本中,我想考虑下面提到的场景。
- 用户可以在浏览器中打开多个选项卡。或者,他可能会打开多个浏览器(仅限同一浏览器)。
- 用户可以关闭一个选项卡并访问另一个选项卡。
- 用户可以单击一个选项卡并简单地关闭另一个选项卡。
- 用户可以在不点击注销选项的情况下关闭浏览器。
- 用户可以使用键盘快捷键(例如ctrl+ F4)关闭浏览器。
所以,我也在检查键码(使用键盘按下了哪个键)。但是,此代码存在一些问题。下面提到了它们。
- 我还没有找到任何解决方案来获取多个键的键码(例如ctrl+ F4)
- 考虑到两个选项卡,如果我键入其他 url(同一站点的),该页面会继续在 Firefox 中加载。
- ctrl+r不能完全工作。
- 有时在尝试访问站点的其他页面时,它只是执行该功能
set_user_log_out()
(仅在 Firefox 中发生)
请建议我为此需要什么。我也浏览了下面提到的网址。
但是上面网址上描述的功能没有考虑我的场景。