区分页面内外焦点损失?

时间:2017-12-15 13:12:49

标签: javascript blur dom-events focusout

<div tabindex="-1">元素可能包含focusout个侦听器。

只要焦点更改为页面中的其他元素(或任何内容),事件就会触发。

但是,只要包含浏览器选项卡或窗口失去焦点,它也会触发。这可能是由许多因素造成的:ALT+TABWINDOWS密钥,用户鼠标单击其他应用程序或用户打开开发人员控制台。

处理FocusEvent时,有没有办法区分由于页面内或页面外的焦点变化而被解雇的事件?

另外,FocusEvent.relatedTarget可用。但是,当焦点移到页面之外时,它似乎都是null,有时当它转到页面内的另一个部分时(即,一个不能“接收”焦点的元素)。 UIEvent.sourceCapabilities似乎也可用,并且当页面作为一个整体失去焦点时似乎可靠地null,但我不确定这对于解决此问题有多可靠。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用Page Visibility API查看窗口/选项卡是否具有用户焦点

https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API