Chr*_*ris 8 javascript google-chrome
我想以编程方式关注输入:
document.getElementById('widgetu25071_input').focus()
Run Code Online (Sandbox Code Playgroud)
当开发者控制台打开时,这不起作用。有什么方法可以在不先关闭控制台的情况下完成此操作吗?
您可以在 google.com 上重现该问题:
打开控制台并执行:
document.getElementById('lst-ib').focus();
Run Code Online (Sandbox Code Playgroud)
对我来说结果:不集中
现在尝试:打开控制台并执行:
setTimeout(function() {
document.getElementById('lst-ib').focus();
}, 9000);
Run Code Online (Sandbox Code Playgroud)
快速关闭控制台。超时结束后焦点开始工作。
每隔几年我就会忘记这件事,这让我发疯,直到我再次想起。所以我为自己和其他人添加答案......
JavaScript 基本上认为您处于不同的应用程序中,并且无法窃取焦点以将焦点集中在您想要聚焦的任何地方。; ) 如果您的光标位于控制台或浏览器的 URL 栏中,您会发现此行为。
鼠标悬停事件仍然会触发,但除非焦点已经位于实际页面上,否则您将无法在页面上的任何位置获得焦点。
例如,如果您有一个包含文本字段的小弹出窗口,并且它在鼠标悬停在其他元素上时显示,那么您将在鼠标悬停时看到弹出窗口,但如果您的光标位于控制台或 URL 栏中。
我疯狂地猜测,如果没有这个,糟糕的程序员可能会在您每次单击 URL 栏或控制台时将焦点偷回页面,从而阻止您离开页面(或执行其他任何操作)。
我希望这对某人有帮助,即使是五年后。
| 归档时间: |
|
| 查看次数: |
1816 次 |
| 最近记录: |