3

一个<div tabindex="-1">元素可能有一个focusout监听器。

每当焦点更改到页面中的另一个元素(或什么都没有)时,该事件就会触发。

但是,只要包含的浏览器选项卡或窗口失去焦点,它也会触发。这可能是由多种原因引起的:键ALT+TABWINDOWS用户在另一个应用程序上单击鼠标或用户打开开发者控制台。

在处理 时FocusEvent,有没有办法区分由于页面内或页面外的焦点更改而触发的事件?

顺便说一句,FocusEvent.relatedTarget是可用的。然而,它似乎null既是当焦点移到页面外时,又有时是当它移到页面内的另一部分时(即一个不能“接收”焦点的元素)。UIEvent.sourceCapabilities似乎也可用,并且似乎null在整个页面失去焦点时可靠地运行,但我不确定这对于解决这个问题有多可靠。

任何帮助将非常感激。

4

1 回答 1

0

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

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

于 2017-12-15T14:24:37.860 回答