0

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”,画布游戏会正确启动,但是当我单击#newdiv 时,什么也没有发生。

我的画布元素:

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

1 回答 1

1

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

你需要使用

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

或者

$(document).keydown(function(){

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

或者,您可以使用 native dispatchEvent,但这很复杂、混乱,而且不是 jQuery。

于 2013-11-05T21:16:49.790 回答