[解決済み] DIVにキーボードフォーカスを与え、キーボードイベントハンドラを付けるにはどうすればよいですか?
2023-06-12 23:15:22
質問
私は、DIVによって表される矩形をクリックし、キーボードイベントのためにリストすることによって、そのDIVを移動するためにキーボードを使用できるようにしたいアプリケーションを構築しています。
ドキュメント レベルでそれらのキーボード イベント用のイベント リスナーを使用するのではなく、おそらくそれにキーボード フォーカスを与えることによって、DIV レベルでキーボード イベントをリッスンできますか?
この問題を説明するための単純化されたサンプルです。
<html>
<head>
</head>
<body>
<div id="outer" style="background-color:#eeeeee;padding:10px">
outer
<div id="inner" style="background-color:#bbbbbb;width:50%;margin:10px;padding:10px;">
want to be able to focus this element and pick up keypresses
</div>
</div>
<script language="Javascript">
function onClick()
{
document.getElementById('inner').innerHTML="clicked";
document.getElementById('inner').focus();
}
//this handler is never called
function onKeypressDiv()
{
document.getElementById('inner').innerHTML="keypress on div";
}
function onKeypressDoc()
{
document.getElementById('inner').innerHTML="keypress on doc";
}
//install event handlers
document.getElementById('inner').addEventListener("click", onClick, false);
document.getElementById('inner').addEventListener("keypress", onKeypressDiv, false);
document.addEventListener("keypress", onKeypressDoc, false);
</script>
</body>
</html>
内側のDIVをクリックすると、それにフォーカスを与えようとしますが、その後のキーボードイベントは常にドキュメントレベルで拾われ、私のDIVレベルのイベントリスナーではありません。
私は単に、キーボード フォーカスのアプリケーション固有の概念を実装する必要がありますか?
私は、これが Firefox で動作することだけを必要とすることを付け加えなければなりません。
どのように解決するのですか?
解決済み - ターゲットDIVにtabindex属性を追加し、キーボードイベントを拾うようにしました。
<div id="inner" tabindex="0">
this div can now have focus and receive keyboard events
</div>
から得られる情報 http://www.w3.org/WAI/GL/WCAG20/WD-WCAG20-TECHS/SCR29.html
関連
-
[解決済み] あるイベントからすべてのイベントハンドラを削除する方法
-
[解決済み] [Solved] 'blur'イベントが発生したとき、フォーカスがどの要素に*行ったかを調べるにはどうすればよいですか?
-
[解決済み】C#でイベントとイベントハンドラを理解する
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] moment.jsでミュータビリティを回避するには?
-
[解決済み] CORS: 認証モードは 'include' です。
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)
-
[解決済み] JavaScriptデータフォーマット/プリティプリンタ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] Is it possible to focus on a <div> using JavaScript focus() function?
-
[解決済み] JSのDateからDay名
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] jqueryはjavascriptのライブラリなのかフレームワークなのか?[クローズド]
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] ECMAScriptとは?
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
-
[解決済み] フォーカスされたcontenteditable preのボーダーを削除するには?