기본적으로 브라우저는 캔버스를 "포커스 가능하게"만들지 않습니다. true로 contentEditable
를 설정하여 어떤 이유로 당신이 tabindex
를 설정할 수없는 경우
이
$("#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(){ /* ... game logic ... */ return false; });
, 당신은 또한 "포커스"캔버스를 만들 수 있습니다 : 내가 가지고 올 수있는 가장 좋은 해결 방법은 캔버스에 tabindex
을 설정하는 것입니다 :
// Add content editable to help ensure the canvas retains focus
$("#canvas").attr("contentEditable", "true")
$("#canvas")[0].contentEditable = true;
이것은 내가 원래 해낸 솔루션입니다,하지만 내 생각에 그것은 tabindex
옵션보다 약간 hackier입니다.
브라우저는 내용 편집 가능한 요소를 경계선으로 표시하는 경향이 있습니다. 이것은 일부 사용자에게 불쾌감을 줄 수 있습니다. 다행히, 당신은 CSS의이 비트와 함께 제거 할 수 :
#canvas { outline: none; }
나는 윈도우 XP, 맥 OS X 및 Linux에서 크롬 3/4/5 및 파이어 폭스 3.0/3.5/3.6에서 두 솔루션을 테스트했습니다. 다음은 작동 예제입니다. http://xavi.co/static/so-canvas-keyboard.html
Woot. 이것은 적절한 해결책 인 것 같습니다. 나를 위해 일합니다. 과정에서 다른 유용한 키보드 브라우저 바로 가기를 실수로 비활성화 할 수 있으므로 사용 방법에주의하십시오. –