2013-02-09 8 views
20

下記のテキストページがある場合。ヘッダーの$()セクションの$("#target").focus();への呼び出しは正常に機能します。そのコマンドをより現実的なページのイベントにバインドすることもできます。クロムのコマンドラインからjquery 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> 

答えて

30

あなたはクロームコンソールをクリックしたとき、それは任意の入力やtextareaコントロール現在のページの、およびその逆からフォーカスを盗むことを理解するであろう。これは、実際にChromeコンソールが他のHTMLページと同じHTMLコントロールを使用して実装されているためです。たとえば、ChromeがChromeコンソールを再帰的に検査しないようにする特別なプロパティがあります。

Chromeコンソール、つまりChromeコンソールに含まれている入力コントロールにコマンドを入力すると、それが重視されます。 Chromeエンジニアは別の方法で実装することにしましたが、ほとんどの場合、ユーザーはコマンドを実行した後もChromeコンソールで入力を続けたいので、コンソールからフォーカスを解除するコマンドはありません。

+2

(Windowsを使用しているときに)クロムウィンドウがアクティブになるようにページのタブをクリックすると、コンソールからフォーカスしようとした要素にフォーカスが移ります。私は同じ問題を抱えており、ページ内でフォーカスを移していることがわかりましたが、あなたが技術的に別のウィンドウにいるので表示されません。 – asifrc

+0

@asifrc Chrome 24.0.xのMac 10.8.2にはありません。 – nikola

+0

さて、私はそれについてはわかりませんでしたが、私の経験ではWindowsにとっては当てはまります(以前のコメントを更新しました)。 – asifrc