23

以下に説明するテキストページがあるとします。 $("#target").focus(); ヘッダーのセクションでの呼び出しは$()問題なく機能します。そのコマンドをより現実的なページのイベントにバインドすることもできます。

ただし、クロム コンソールを開いて入力 $("#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

一種のハックですが、機能します...

setTimeout :Dタイマーが切れる前に、ウェブページをクリックしてハイライトコードをラップしてみてください。

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