2011-08-05 19 views
0

誰かがこれを手伝ってくれることを願っています。私はhtml5/javascriptでゲームを作っています。ユーザーが矢印キーでマップを移動し、プレーヤーがキャンバスをクリックするとコードを実行できるようにします。私はすべて正常に動作していますが、ユーザがキャンバスをクリックしたときに何らかの理由で時々キャンバスの外をクリックしない限り、keydownリスナは機能しなくなります。私はそれをGoogleにしようとしたと私はそれを修正するために代表団を設定したいと思われるが、私はそれが動作するように問題を抱えている。現在のコードは次のとおりです。Javascript keydownリスナーがクリック後に機能しない

$(window).keydown(function(event){keyDown(event);}); 

$("#game").click(function(e){ 
    var x = e.pageX - $(this).offset().left; 
    var y = e.pageY - $(this).offset().top; 
    alert(x+" "+y); 
}); 

ご協力いただければ幸いです。

答えて

1

私はjsFiddleでコードを立ち往生し、すべての時間を仕事に表示されます。http://jsfiddle.net/ianoxley/fb26Y/

はちょうどあなたが使用しているどのブラウザ/ OS不思議?そして、あなたのkeyDown関数で、あなたの​​イベントハンドラで呼び出されたことは何ですか?

+0

私は今、気が狂っています。問題は私がデバッグのためにアラートを使用しているように思えました。そして、enterを押してアラートウィンドウを取り除くと、DOMはどのようにフォーカスを失っていたのでしょうか。私のコードからアラートを削除し、現在は正常に動作しています。 – James

+1

@James:デバッグメッセージ(firebugやIE開発ツール、ChromeとSafariに内蔵されています(Operaについては知らない)で利用可能)に 'console.log'を使用してください。 –

1

あなたのタグにはフォーカスがないのでイベントがないと思いますか?

ここで私の環境で動作するソリューションです。 divタグを作成することはフォーカス可能です。tabindex = "0"属性を渡します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
    <head> 
      <script type="text/javascript"> 
      function xxx() { 
       var div = document.getElementById('x'); 
       div.focus(); 
      } 
      function keyd(e) { 
      alert("DDDDDDDD" + e); 
      } 
      </script> 

    </head> 
    <body onload="xxx();"> 
      <div tabindex="0" id='x' onkeydown="keyd(event);" style="background-color: green; width: 100px; height: 100px;">    
      </div> 
    </body> 
</html> 
+0

私の場合ではありませんが、私は自分の問題を解決するためのアイディアを得ました。ありがとう。フォーカスを失うことは私には問題でした。 – Kabkee

関連する問題