JQuery $(window).focusout问题

问题是,我正在创建一个类似聊天的程序,需要知道用户是否已离开窗口,还是更改为另一个窗口或标签,以允许其他用户看到其他用户现在没有看到该页面。

我认为窗口事件焦点会解决我的问题,然而,它有一些问题。 第一:它不会仅在用户离开窗口时触发,如果它们专注于输入字段,然后单击页面中的任何其他位置,则事件将触发。 显然这是无法忍受的。 我在Firefox中设法解决了这个问题。 在Firefox上,当发生这种情况时,浏览器会触发一次focusout事件。 但是,如果你真的离开了窗户,它会发射两次。 所以,一点编程就变得神奇了。

然后是第二个问题:Chrome,我相信其他浏览器的行为可能相同,只会触发一次焦点事件,无论你做什么。 离开窗口,将焦点从输入改为页面,它是一样的,所以,我的编程没有在那里工作。

有没有人知道模拟所需行为的方法? 或者让Chrome和其他可能的浏览器表现得像Firefox或其他任何东西?

感谢大家!

使用blur而不是focusout

 $(window).blur(function() { // code }); 

不同之处在于focusout在DOM树中冒泡而blur不会。 如果在窗口对象上设置focusout ,则页面元素上发生的所有模糊事件也将触发该处理程序,这是您不想要的。

不同之处在于focusout (在窗口对象上设置时)捕获在页面上触发的所有模糊事件(在任何元素处)。 相比之下, blur (在窗口对象上设置时)不捕获那些模糊事件。

现场演示: http //jsfiddle.net/simevidas/taRG6/

这回答了吗? 谈谈使用模糊事件

JavaScript / jQuery:测试窗口是否具有焦点

我回答这个问题,这个解决方案很有效,除了我抓住了两次事件。

仅当我单击另一个浏览器选项卡或切换到另一个应用程序时,才会触发窗口上的BLUR事件。