打开开发者控制台的 element.focus() 不起作用

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)

快速关闭控制台。超时结束后焦点开始工作。

Bra*_*rad 4

每隔几年我就会忘记这件事,这让我发疯,直到我再次想起。所以我为自己和其他人添加答案......

JavaScript 基本上认为您处于不同的应用程序中,并且无法窃取焦点以将焦点集中在您想要聚焦的任何地方。; ) 如果您的光标位于控制台或浏览器的 URL 栏中,您会发现此行为。

鼠标悬停事件仍然会触发,但除非焦点已经位于实际页面上,否则您将无法在页面上的任何位置获得焦点。

例如,如果您有一个包含文本字段的小弹出窗口,并且它在鼠标悬停在其他元素上时显示,那么您将在鼠标悬停时看到弹出窗口,但如果您的光标位于控制台或 URL 栏中。

我疯狂地猜测,如果没有这个,糟糕的程序员可能会在您每次单击 URL 栏或控制台时将焦点偷回页面,从而阻止您离开页面(或执行其他任何操作)。

我希望这对某人有帮助,即使是五年后。