考虑这个输入 - 我们在按 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>