Canvas - addEventListener无法正常模拟按键

时间:2013-11-05 20:31:08

标签: javascript jquery html5 canvas

我在一个画布游戏中有以下addEventListener来控制键盘事件:

document.addEventListener("keydown", keyDown, true);
document.addEventListener("keypress", keyPress, true); 

以下jQuery代码模拟了用于启动游戏的按键事件。

$("#new").click(function(event) {
  event.preventDefault(); // Stop the link click from doing anything.
  var ev = jQuery.Event("keypress"); // Build an event to simulate keypress.
  ev.which = 78; // Keycode for 'N' is 68
  ev.ctrlKey = false; // Control key is down.
  $(this).trigger(ev); // Fire!
});

如果我用键盘按'N',画布游戏就会正常启动,但当我点击#new div时,没有任何反应。

我的画布元素:

<canvas width="500px" height="480px" tabindex="1" id="game"></canvas>

1 个答案:

答案 0 :(得分:1)

jQuery .trigger只运行使用jQuery绑定的事件,而不是addEventListener。

您需要使用

$(document).bind('keydown',function(){

$(document).keydown(function(){

能够使用jQuery trigger。全有或全无jQuery。

或者,您可以使用原生dispatchEvent,但这很复杂,很乱,而不是jQuery。