JavaScript / DOM:如果焦点丢失到另一个窗口(应用程序),如何防止模糊事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript / DOM:如果焦点丢失到另一个窗口(应用程序),如何防止模糊事件相关的知识,希望对你有一定的参考价值。

如果用户点击此文档中的某个表单字段,我想在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:如果焦点丢失到另一个窗口(应用程序),如何防止模糊事件的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript DOM总结(文档事件)

JavaScript&jQuery.DOM事件

使用 Localstorage 将 javascript 变量从一个 html 页面存储和检索到另一个 (DOM)

Firefox 错误:如果 resize:vertical 设置为焦点,单击事件会丢失

java swing中如何自行丢失焦点?已知怎样获取没找到如何丢失!

如何将 DOM 数据从一个窗口传输到另一个窗口?