JQuery $(window).focusout问题

Uri*_*che 4 javascript jquery focus javascript-events

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

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

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

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

感谢大家!

Šim*_*das 8

使用blur而不是focusout:

$(window).blur(function() {
    // code
});
Run Code Online (Sandbox Code Playgroud)

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

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

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