0

上ボタンまたは下ボタンを押すたびに、それらのキーが押されたかどうかを確認できます。たとえば、ここでアラートが発生します。

 if ((38 in keysDown) ) { // Player holding up

       window.alert("up button was pressed");
 }


 if ((40 in keysDown) ) { // Player holding down

       window.alert("down button was pressed");
 }

しかし、ここで私がEnterキーを押してもアラートは再生されません

if ((13 in keysDown) ) { // player pushed on enter
       window.alert("enter key was pressed"); // here nothing happen
}

イベントリスターを追加するために、最初にこれらの3行を使用しています。

   keysDown = {};
   addEventListener("keydown", function (e) {keysDown[e.keyCode] = true;}, false);
   addEventListener("keyup", function (e) {delete keysDown[e.keyCode];}, false);

しかし、私がエンターキーを知らない何らかの理由で、Firefoxで問題が発生し、ChromeとIEで正常に動作します

前もって感謝します。

編集私は問題を理解しました、私が使用しているキャンバスにはフォーカスがないので、Enterボタンは機能しません、any1はフォーカスを切り替える方法を教えてもらえますか?

4

3 に答える 3

0

編集私は問題を理解しました、私が使用しているキャンバスにはフォーカスがないので、Enterボタンは機能しません、any1はフォーカスを切り替える方法を教えてもらえますか?

もちろん。
HTML5キャンバス要素にフォーカスを設定するにはどうすればよいですか?

またはさらに良い:

1-タブインデックス:

$("#canvas")
    // Add tab index to ensure the canvas retains focus
    .attr("tabindex", "0")
    // Mouse down override to prevent default browser controls from appearing
    .mousedown(function(){ $(this).focus(); return false; }) 
    .keydown(function(){ /* ... bla bla bla ... */ return false; });

2-contentEditableをtrueに設定します。

// Add content editable to help ensure the canvas retains focus
$("#canvas").attr("contentEditable", "true")
$("#canvas")[0].contentEditable = true;

ソース:jqueryを使用してHTMLキャンバスにキーボードフォーカスを与えるにはどうすればよいですか?

于 2012-04-20T18:54:52.300 に答える
0

event.whichFirefoxとevent.keyCodeIEで使用します。

于 2012-04-20T18:39:11.280 に答える
0

入力のキーコードは 13 です。

以下は、Enter キーの押下を検出する簡単なイベント メソッドです。

編集:私は自分の投稿をもっと単純なもので編集しました:

    function check() {
        if (window.event.keyCode == 13) {
            document.write("Enter pressed");
        }
    }

<body onkeypress="check()">
</body>
于 2012-04-20T18:33:01.273 に答える