私はチャットアプリケーションを構築しており、ユーザーがキーを押すたびに、押したキーが特定の要素 (iframe ui.rteIFrame 内の編集可能な HTML ドキュメント ui.rte1Content) に入力されるようにしようとしています。正確に)。これは、ページ上のどの要素に現在フォーカスがあるかに関係なく発生するはずです。私は Firefox と Chrome をサポートすることだけに関心があります。
これまでのところ、window.onkeydown イベントにハンドラーを登録しました。
function captureKeyDown(e) {
console.log("Capturing: " + e.keyCode);
// We ignore certain keys such as page up, as well as keys pressed with
// alt or ctrl, except for a few select combos like ctrl+b
if(!ignoreKeys.contains(e.keyCode) && !e.altKey &&
(!e.ctrlKey || (e.ctrlKey && validCtrlKeys.contains(e.keyCode)))) {
ui.rte1Content.focus(); // Chrome prefers this.
if(!rteHasFocus) {
ui.rteIFrame.focus(); // Firefox prefers this
}
//alert("A commented out alert");
}
}
これは Firefox で完全に機能します。rteIFrame がフォーカスを取得し、押されたキーが表示され、続行します。ただし、Chrome (23.0.1271.95) では、rte1Content は次の文字が表示されるのに間に合うように正しくフォーカスを取得しますが、イベントを最初にトリガーした最初の文字はエーテルに消えます。
価値があるのは、アラートステートメントのコメントを外すと、手紙がChromeで問題なく表示されることです. これがなぜなのかわかりません。
これを機能させる方法について何か提案はありますか?