为什么在触发 Chrome 开发者工具调试器时,模糊事件永远不会触发?

Why does blur event never fire if Chrome developer tools debugger is triggered?

提问人:xyz 提问时间:8/1/2023 更新时间:8/1/2023 访问量:47

问:

考虑这个输入 - 我们在按回车键时会模糊。

它通常有效。但是,如果您打开 Devtools,那么调试器行可以正常工作,那么 !!模糊永远不会触发 - 即使元素失去焦点!

为什么,这是怎么回事?

有没有办法获得可靠的模糊事件?

(这不仅仅是 Devtools/debugger - 似乎还有其他情况可能会发生这种情况,例如如果窗口失焦,但我还没有深入挖掘到任何具体的东西来报告这里。

document.querySelector('input').addEventListener('blur', () => console.log('!!blur'));

document.querySelector('input').addEventListener('focus', () => console.log('!!focus'));

document.querySelector('input').addEventListener('keypress', (e) => {
  if (e.key === 'Enter') {
    console.log("!!enter");
    debugger;
    e.target.blur();
  }
});
<input>

<p>Try compare opening / closing devtools and pressing enter - !!blur is missing when open!</p>

javascript dom-events

评论

0赞 Barmar 8/1/2023
当我打开 DevTools 时,我得到!!blur

答:

0赞 Pierre 8/1/2023 #1

它在堆栈溢出输入上使用您的代码对我有用。也许你并没有真正模糊自己?我只是退出输入,它就可以工作了,chrome 开发工具是否打开。

Blur 甚至可以在代码丢失焦点的情况下工作。所以我很困惑。

可以捕捉模糊的一件事是 chrome 扩展程序?也许您有一些东西记录您的输入以捕获加密货币密钥或其他此类恶意软件?在没有加载扩展程序的情况下隐身会发生什么?