大家好 我正在进行Ajax网络聊天,并且每隔几秒使用超时的Ajax请求更新此应用程序。从浏览器视图中检测用户
使用定时Ajax请求意味着Web服务器必须处理非常沉重的负载,并且我想尽可能减少请求数量。
由于超时在浏览器触发我想知道这一点:
是否可以使用JavaScript来检测超出浏览器视图的用户,这样我可以清除超时他们的聊天记录更新?
大家好 我正在进行Ajax网络聊天,并且每隔几秒使用超时的Ajax请求更新此应用程序。从浏览器视图中检测用户
使用定时Ajax请求意味着Web服务器必须处理非常沉重的负载,并且我想尽可能减少请求数量。
由于超时在浏览器触发我想知道这一点:
是否可以使用JavaScript来检测超出浏览器视图的用户,这样我可以清除超时他们的聊天记录更新?
是的,Gecko和WebKit浏览器,你可以使用全局window
对象onblur
事件:
window.onblur = function(e) {
//clear timeout here...
};
对于IE浏览器,你就需要使用onfocusout
事件。
感谢您的回应,此活动是否适用于所有/大多数浏览器? – 2010-10-20 08:06:18
您可以检查“聊天框”已经集中使用
document.activeElement
+1,这也可以工作,但用户可能会失去“聊天室”的焦点,仍然在查看窗口。 – 2010-10-20 08:09:19
尝试寻找所谓的“彗星”的解决方案,它使用该数据推送到客户端,而不是客户端的拉动长期连接来自服务器的数据。 – janmoesen 2010-10-20 07:56:15
@janmoesen +1 - 谢谢,会做。 – 2010-10-20 08:04:00