2012-01-15 13 views
0

私のキーボードインタラクティブ機能コードは、IEとChromeでは正常に機能しますが、FireFoxでは正しく機能しません。完全なコードはhttp://sgdk2.enigmadream.com/ben/Html5Sample.htmlです。ファイルをローカルでダウンロードして編集して修正をテストしてください(間違った回答を間違って入力してください:))。 1つのHTMLファイルに100%完全に含まれています。IEとChromeではOnkeydownイベントが発生しますが、FireFoxでは発生しません。

var keyboardState; 
keyboardState = new Object(); 
keyboardState.key= { None:0, Enter:13, Shift:16, 
/* etc... */}; 

keyboardState.keyState = new Array(); 
keyboardState.handleKeyDown = function(e) { 
    e = e || window.event; 
    keyboardState.keyState[e.keyCode] = true; 
}; 


keyboardState.handleKeyUp = function(e) { 
    e = e || window.event; 
    keyboardState.keyState[e.keyCode] = false; 
}; 

keyboardState.isKeyPressed = function(key) { return keyboardState.keyState[key]; }; 

...

<body class="unselectable" unselectable="on" 
onkeydown="keyboardState.handleKeyDown(event)" 
onkeyup="keyboardState.handleKeyUp(event)"> 

私がデバッグだ場合handleKeyDownも、発射されていないようです:あなたの便宜のために

、ここでは、私は信じて、関係するすべてのコードがありますこの権利。これは、IEとChromeでうまく動作するため、かなり近いはずです。

答えて

1

prototype/javascript - firefox not firing keypress/keydown event unless focus is in textbox

文書の代わりに、体に結合事象を試してみてください。また、 'onevent'属性を使用しないで、スクリプトブロック内にイベントリスナーを作成してみてください。

+0

私はいくつかのサイトがブラウザ間の互換性を提案していると思ったので、属性を使用しています。しかし、今私はそれを見つけることができません。それでも、私はあなたの提案を実装している1つの属性を削除し、 "document.onkeydown = keyboardState.handleKeyDown;"のようなコードを追加してすべてのブラウザで動作しているようです。ありがとうございました。 – BlueMonkMN

関連する問題