JavaScript/DOM : how to prevent blur event if focus is lost to another window (application)

标签 javascript dom focus blur

如果用户单击该文档中的某个表单字段,我希望显示 HTML 文档中的某些内容,并且如果用户离开该表单字段(通过激活另一个表单字段或单击页面上的其他位置)。

我尝试使用焦点和模糊事件来实现该行为。这原则上可行,但存在一个问题:不仅当用户在同一个文档内移动焦点时,而且当另一个窗口(可能是来自不同的应用程序)被激活(获得焦点)。

我怎样才能避免这种情况呢?如果焦点转到不同的应用程序(或另一个浏览器窗口或选项卡),我不希望看到页面发生任何更改。

非常感谢!

最佳答案

使用 if ( document.activeElement === this ) { return; 保护模糊事件处理程序}.

下一步将是防止焦点事件处理程序在窗口重新获得焦点时激活。这可以使用一个小图案来完成:

function onFocus(e) {
    if ( this._isFocused ) { return; }
    this._isFocused = true;
    ...
}

function onBlur(e) {
    if ( document.activeElement === this ) { return; }
    this._isFocused = false;
    ...
}

关于JavaScript/DOM : how to prevent blur event if focus is lost to another window (application),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24638129/

相关文章:

javascript - 如何在 React 中渲染对象?

javascript - HTML 数据属性可以保存对 DOM 元素的引用吗?

javascript - 一种检查 javascript 文件是否按顺序加载的方法?

Javascript/jquery : retain option item of select box

javascript - 如何使用 ngIf 将输入的焦点放在表单字段中

android - 在列表适配器android中水平移动Edittext的焦点

Android:聚焦时改变风格

javascript - 通过此数组 js 将项目添加到循环数组中

javascript - 如何在 CSS 中实现这个逻辑?

javascript - 为什么我的 jQuery UI 对话框无法工作?