问题是,我正在制作一个类似聊天的程序,需要知道用户是否已离开窗口,或者更改为另一个窗口或标签,以允许其他用户看到其他用户没有看到现在页面。
我认为窗口事件焦点会解决我的问题,然而,它有一些问题。 第一: 它不会仅在用户离开窗口时触发,如果它们专注于输入字段,然后单击页面中的任何其他位置,则事件将触发。显然这是无法忍受的。 我在Firefox中管理过这种方式。在Firefox上,当发生这种情况时,浏览器会触发一次focusout事件。如果你真的离开窗户,它会发射两次。所以,一点编程就变得神奇了。
然后出现了第二个问题: Chrome,我相信其他浏览器的行为可能相同,只会触发一次焦点事件,无论你做什么。离开窗口,将焦点从输入改为页面,它是一样的,所以,我的编程没有在那里工作。
有没有人知道模拟所需行为的方法?或者让Chrome和其他可能的浏览器表现得像Firefox或其他什么?
谢谢大家!
答案 0 :(得分:8)
使用blur
代替focusout
:
$(window).blur(function() {
// code
});
不同之处在于 focusout
冒出DOM树,blur
没有。如果在窗口对象上设置focusout
,则页面元素上发生的所有模糊事件也将触发您不想要的处理程序。
不同之处在于focusout
(在窗口对象上设置时)捕获在页面上触发的所有模糊事件(在任何元素处)。相反,blur
(在窗口对象上设置时)不捕获那些模糊事件。
答案 1 :(得分:1)
这回答了吗?谈谈使用模糊事件
答案 2 :(得分:0)
我回答这个问题, 这个解决方案完美无缺,只是我抓住了两次事件。
窗口上的BLUR 事件仅在我点击其他浏览器标签或我切换到其他应用程序时触发。