2010-10-20 33 views
0

大家好 我正在进行Ajax网络聊天,并且每隔几秒使用超时的Ajax请求更新此应用程序。从浏览器视图中检测用户

使用定时Ajax请求意味着Web服务器必须处理非常沉重的负载,并且我想尽可能减少请求数量。

由于超时在浏览器触发我想知道这一点:

是否可以使用JavaScript来检测超出浏览器视图的用户,这样我可以清除超时他们的聊天记录更新?

+1

尝试寻找所谓的“彗星”的解决方案,它使用该数据推送到客户端,而不是客户端的拉动长期连接来自服务器的数据。 – janmoesen 2010-10-20 07:56:15

+0

@janmoesen +1 - 谢谢,会做。 – 2010-10-20 08:04:00

回答

2

是的,Gecko和WebKit浏览器,你可以使用全局window对象onblur事件:

window.onblur = function(e) { 
    //clear timeout here... 
}; 

对于IE浏览器,你就需要使用onfocusout事件。

+0

感谢您的回应,此活动是否适用于所有/大多数浏览器? – 2010-10-20 08:06:18

1

您可以检查“聊天框”已经集中使用

document.activeElement 
+0

+1,这也可以工作,但用户可能会失去“聊天室”的焦点,仍然在查看窗口。 – 2010-10-20 08:09:19