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

Bin*_*rus 2 javascript dom focus blur

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

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

我该如何避免呢?如果焦点转到其他应用程序(或其他浏览器窗口或标签),则我不想在页面上看到任何更改。

非常感谢你!

Jay*_*ing 5

使用来保护模糊事件处理程序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;
    ...
}
Run Code Online (Sandbox Code Playgroud)