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

问题描述 投票:0回答:0

考虑这个输入 - 我们在按 Enter 时会变得模糊。

正常工作。但是如果你打开 Devtools,那么调试器行就可以工作,那么 !!blur 永远不会触发 - 即使元素失去焦点!

为什么,发生了什么事?

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

(不仅仅是开发工具/调试器 - 似乎还有其他情况可能会发生这种情况,例如窗口失焦,但我还没有深入挖掘,无法在此处报告任何具体内容。)

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 dom-events
© www.soinside.com 2019 - 2024. All rights reserved.