javascript - 在浏览器中打开新选项卡时防止 onBlur 事件发生

标签 javascript events onblur

让我们考虑简单的 HTML 输入字段

<input type="text" onblur='alert("hello");' />

当鼠标位于此输入字段中并且您尝试在浏览器(Chrome、IE...)中打开新选项卡时, onblur 事件正在被触发。我不想以这种方式触发 onblur 事件。我怎样才能避免这种情况?

最佳答案

您可以使用document.activeElement 检查元素是否确实在 DOM 中失去焦点。 ( Browser compatibility 也很宽。)

您的代码可能如下所示:

HTML

<input type="text" onblur='blurred(this);' />

JS

function blurred(elem) {
    if (elem != document.activeElement) {
        alert("Bye !");
    }
}

另请参阅此 short demo

关于javascript - 在浏览器中打开新选项卡时防止 onBlur 事件发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16957022/

相关文章:

javascript - JS 中引用 HTML 的标记无效或意外

javascript - 仅启用 mouseup 事件 Jquery 中的 Click 事件

javascript - Firefox focus() 设置焦点并立即模糊

reactjs - 使用 onBlur 在 React 组件中设置焦点

javascript - jQuery 模糊处理程序不适用于 div 元素?

javascript - 数组不断删除索引中的第一个数字

javascript - HTML JS 只有一半的选择列表被删除?

javascript - 使用 react.cloneElement 渲染简单的 HTML

javascript - jQuery 通过检查错误变量停止提交表单

javascript - 当 DOM 元素位于场景上时,THREE.JS OrbitControls 不起作用