javascript - 区分内页和外页的焦点丢失?

标签 javascript blur dom-events focusout

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/

相关文章:

blur - iOS 10 模糊滤镜 css

JavaScript onclick 事件在没有任何点击的情况下触发

javascript - 显示星期几

javascript - js渲染模板中的else if条件

javascript - if 条件满足但不适用(模)

c++ - 在 Python 或 C++ 中获取像素颜色的最快方法?

javascript - 如何更改 Facebook 分享按钮的样式?

Android 模糊 mask 滤镜

dom - 如何将 CSS AnimationEnd 事件处理程序添加到 GWT 小部件?

javascript - JavaScript中如何观察复杂对象及其变化?