【发布时间】:2012-07-18 09:01:24
【问题描述】:
我想在我的网站上显示所有用户在线(实时;就像任何聊天模块一样)。我正在使用下面提到的脚本来执行此操作。
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 中发生)
请建议我为此需要什么。我也浏览了下面提到的网址。
How to Track the Online Status of Users of my WebSite?
但是上面网址描述的功能没有考虑我的场景。
【问题讨论】:
标签: javascript php jquery session dom-events