我有一些 HTML / JS 应用程序,我喜欢通过注入虚拟用户输入来测试。
我尝试使用
document.activeElement
来查找我将模拟输入推送到的 INPUT / TEXTAREA,但通常 activeElement
仅指向 document.body
。输入真正的击键将使一些浏览器魔法发生,它将焦点捕捉到页面上的某些(第一个?)可见的 INPUT 元素并将刚刚输入的字符放在那里。
这种魔法总是如此吗?这种情况是否以可靠的方式发生?什么样的 JS 代码会像这个“魔法”?
document.addEventListener('keydown', (e, input) => /[A-Za-z0-9]/.test(e.key) && document.querySelector('input').focus());
<input>