Ответ 1
Ключевыми событиями являются только огонь по документу и элементам, которые могут получать фокус. Поэтому для обработки ключевых событий в элементе <canvas>
вам нужно либо позволить ему получать фокус, добавляя атрибут tabindex
(например, <canvas id="game" width="800" height="400" tabindex="1"></canvas>
), либо просто обрабатывая ключевые события для всего документа, что может и не быть вы хотите (например, если на странице есть несколько элементов, для которых вы хотите обрабатывать ключевые события).
Что касается того, как присоединить обработчики событий, самый простой способ:
var el = document.getElementById("your_element_id");
el.onkeydown = function(evt) {
evt = evt || window.event;
alert("keydown: " + evt.keyCode);
};
el.onkeyup = function(evt) {
evt = evt || window.event;
alert("keyup: " + evt.keyCode);
};
Если вам может потребоваться несколько прослушивателей, вы можете использовать addEventListener
в большинстве браузеров или attachEvent
в IE <= 8:
if (typeof el.addEventListener != "undefined") {
el.addEventListener("keydown", function(evt) {
alert("keydown: " + evt.keyCode);
}, false);
} else if (typeof el.attachEvent != "undefined") {
el.attachEvent("onkeydown", function(evt) {
alert("keydown: " + evt.keyCode);
});
}