繁体   English   中英

带有开放开发者控制台的 element.focus() 不工作

[英]element.focus() with open developer console not working

我想以编程方式关注输入:

document.getElementById('widgetu25071_input').focus()

当开发人员控制台打开时,这不起作用。 有没有先关闭控制台的方法?

您可以在 google.com 上重新创建问题:

打开控制台并执行:

document.getElementById('lst-ib').focus();

结果对我来说:不专注

现在尝试:打开控制台并执行:

setTimeout(function() {
document.getElementById('lst-ib').focus();
}, 9000);

快速关闭控制台。 超时完成后,焦点开始工作。

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

JavaScript 基本上认为你在不同的应用程序中,无法窃取焦点以将焦点集中在你想集中的地方。 ;) 如果您的 cursor 在控制台或浏览器的 URL 栏中,您会发现此行为。

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

因此,例如,如果您有一个包含文本字段的小弹出窗口,并且它显示在其他元素的鼠标 hover 上,您将在鼠标 hover 上看到弹出窗口,但如果您的cursor在控制台或URL栏中。

作为一个疯狂的猜测,如果没有这个,我会说一个糟糕的程序员可以通过在您每次单击 URL 栏或控制台时将焦点偷回页面来阻止您离开页面(或做任何其他事情)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM