A <div tabindex="-1">
元素可能有一个 focusout
听众。
只要焦点更改为页面中的另一个元素(或什么都没有),就会触发该事件。
但是,只要包含的浏览器选项卡或窗口失去焦点,它也会触发。这可能是由多种原因引起的:ALT+TAB
, WINDOWS
键、用户鼠标单击另一个应用程序或用户打开开发人员控制台。
处理 FocusEvent
时, 有什么方法可以区分由于页面内或页面外的焦点变化而触发的事件吗?
顺便说一句, FocusEvent.relatedTarget
可用。不过好像是null
当焦点移到页面外时,有时当焦点移到页面内的另一部分时(即无法“接收”焦点的元素)。 UIEvent.sourceCapabilities
似乎也可用,并且似乎可靠地去 null
当整个页面失去焦点时,但我不确定这对于解决这个问题有多可靠。
如有任何帮助,我们将不胜感激。
最佳答案
您可以使用 Page Visibility API 来查看窗口/选项卡是否具有用户焦点
https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API
关于javascript - 区分内页和外页的焦点丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47833130/