JQuery $(window).focusout问题

时间:2011-02-28 14:48:32

标签: javascript jquery javascript-events focus

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

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

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

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

谢谢大家!

3 个答案:

答案 0 :(得分:8)

使用blur代替focusout

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

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

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

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

答案 1 :(得分:1)

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

JavaScript / jQuery: Test if window has focus

答案 2 :(得分:0)

我回答这个问题, 这个解决方案完美无缺,只是我抓住了两次事件。

窗口上的

BLUR 事件仅在我点击其他浏览器标签或我切换到其他应用程序时触发。