Альтернативным решением вашей проблемы в виде «сырого javascript» может быть использование свойства element.tabIndex
.
canvas.tabIndex = 0;
Это позволит вам использовать это
canvas.onkeydown = function(){
...
}
Вместо этого
document.body.onkeydown = function(){
...
}
Таким образом, чтобы управлять холстом, вы должны сначала сфокусировать его - как в флеш-игре.
Когда холст не сфокусирован, он ничего не сделает. И вы сможете набирать текст в близлежащем текстовом поле, не мешая холсту.
Вы также можете дать некоторую визуальную индикацию того, что холст сфокусирован, используя псевдоселектор :focus
в css:
canvas:focus{
...
}
Я уверен, что в jQuery есть свойство, эквивалентное tabIndex
. Я также уверен, что IE поддерживает свойство tabIndex
.
Надеюсь, это поможет