jquery focus命令在chrome命令行中不起作用

时间:2013-02-09 00:34:58

标签: javascript jquery google-chrome

如果我有如下所述的文字页面。标题中 $("#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>

3 个答案:

答案 0 :(得分:34)

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

在Chrome控制台中键入命令时,即在Chrome控制台中的输入控件中,它将保持焦点。 Chrome工程师可能选择以不同方式实施它,但在大多数情况下,用户希望在触发命令后继续在Chrome控制台中键入内容,因此任何命令都不会从控制台释放焦点。

答案 1 :(得分:0)

一种可能的方法是:散焦/模糊您的控件。将其滚动出View。输入命令以将焦点放在Chrome控制台中。如果这样,网站将向上滚动到您的控件,则可以确保焦点方法有效。

答案 2 :(得分:0)

有点黑,但可以工作...

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

ele2 = $('#input')
setTimeout(function(){ele2.focus()},4000);