2017-10-16 5 views
1

まずキーボードをクリックしなくてもキーボードイベントを検出したいと思います。キーボードイベントはマウスに頼るべきではないので、これは奇妙に思えます。私はFirefoxの最新バージョンを使用しています。開発ツールには、最初にドキュメントをクリックしなくても、キーボードイベントを防ぐための初期フォーカスがあります。

私はいくつかの方法でウィンドウ、ドキュメント、ボディにフォーカスを追加しようとしましたが、これまでのところ運がありません。

私はjsfiddleリンクを与えますが、それはiframeの内部で実行されていますが、これは状況とソリューションが異なると思います。ここで

は、私が試したものです:

(何のjQueryんしてください!)

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title></title> 
    <meta name="description" content=""> 
    <meta name="author" content=""> 
</head> 
<body> 

    <p>Hello world.</p> 

    <script> 

     document.addEventListener("DOMContentLoaded", function(e) { 

      // none of these seem to help 
      document.body.focus(); 

      //document.focus(); 

      //window.focus(); 

      //top.document.focus(); 

      //parent.document.focus(); 

      //document.documentElement.focus(); 

     }); 

     // not triggered until after clicking in the window 
     document.addEventListener("keydown", function(e) { 
      console.log("keydown", e); 
     }); 

    </script> 
</body> 
</html> 

更新

開発ツールを閉じて、キーボードイベントは、罰金トリガ(フォーカスを設定する必要はありません)。

コンソールやデベロッパーツールのウィンドウからフォーカスを取り戻すにはどうすればよいですか(通常のユーザーが開いている可能性は低いですが)。

+1

正確に何をしますか? – Lixus

+0

キーボードのイベントを最初にクリックすることなく検出する –

+0

Chrome v61.0.3163.100で問題を再現できます。 – moffeltje

答えて

0

デベロッパーコンソールを開くと起こると思います。そうすれば、ページはフォーカスを失う。確認する:

// not triggered until after clicking in the window 
document.addEventListener("keydown", function(e) { 
    alert("keydown", e); 
}); 
関連する問題