23

如果我有如下所述的文本页面。标题部分中的调用工作 $("#target").focus(); 正常。$()我还可以将该命令绑定到更真实页面中的事件。

但是,如果我打开 chrome 控制台并键入 $("#target").focus(); 它不会改变焦点。如果我运行$("#target").val("something");它会更改屏幕上的值,但它不适用于焦点。

显然这不是一个关键问题,但我真的很好奇为什么会发生这种情况。有人有想法吗?

<html>
  <head>
    <script src="jquery-1.9.1.js"></script>
    <script>
      $(function(){
         $("#target").focus();
      });
    </script>
  </head>

 <body>
   <input id="target" type="text">
 </body>
</html>
4

3 回答 3

37

您将意识到,当单击 Chrome 控制台时,它将从当前页面上的任何输入或文本区域控件中窃取焦点,反之亦然。这是因为 Chrome 控制台实际上是使用与任何其他 HTML 页面相同的 HTML 控件实现的,只是具有特殊属性,例如,阻止 Chrome 以递归方式检查 Chrome 控制台。

当您在 Chrome 控制台(即 Chrome 控制台的输入控件)中键入命令时,它将保持焦点。Chrome 工程师可能选择了不同的实现方式,但在大多数情况下,用户会希望在发出命令后继续在 Chrome 控制台中输入,因此没有命令会从控制台释放焦点。

于 2013-02-09T00:39:55.027 回答
0

一种可能的方法是:散焦/模糊您的控制。将其滚动出视图。在 Chrome 控制台中输入要聚焦的命令。如果然后网站将向上滚动到您的控件,您可以确定焦点方法有效。

于 2019-01-08T14:07:33.170 回答
0

有点骇人听闻,但有效......

尝试setTimeout :D在计时器到期之前包装您的突出显示代码,然后单击网页。

ele2 = $('#input')
setTimeout(function(){ele2.focus()},4000);
于 2019-12-29T07:06:59.707 回答