キーボードイベントを処理するとき、すべての要素がイベントターゲットを取得できるわけではないことに気付きました。たとえば、次のようにキーボードフォーカスのない要素(「p」要素)にハンドラーを追加すると、もちろん、キーボードを押しても何も起こりません。
ただし、ドキュメント全体で「p」要素を変更してそのキーボードイベントを追加すると(たとえば、コードをdocument.keydown = myFunction;に変更することで)、コードは正常に機能します。そして、私がどこかで読んだように、これは、キーボードイベントがドキュメントのどこかで発生し、その後ドキュメント要素にぶつかったためです。では、このイベントがドキュメントのどこで発生するか教えていただけますか?コードは次のとおりです。
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p id = 'myId'>Some Text</p>
<script>
function myFunction(e)
{
var x=e.keyCode;
var keychar=String.fromCharCode(x);
alert("Key " + keychar + " was pressed down");
}
var myEl = document.getElementById('myId');
myEl.onkeydown = myFunction;
</script>
</body>
</html>
ありがとうございました!