如果用户单击该文档中的某个表单字段,我希望显示 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/