2009-03-04 6 views
5

JavaScript를 사용하여 웹 응용 프로그램의 전역 키보드 단축키 처리기를 만드는 가장 확실한 방법은 무엇입니까? 즉 처리해야하는 이벤트와 처리기를 연결해야하는 항목은 무엇입니까?JavaScript를 사용한 강력한 키보드 단축키 처리

Gmail의 단축키 하나와 단축키를 모두 처리 할 수있는 시스템이 필요합니다. 예 : Ctrl + B 등. 코드는 최신 브라우저뿐만 아니라 IE 6에서 작동해야합니다.

jQuery가 아닌 Prototype 프레임 워크를 사용할 수 있으므로 jQuery에 대한 답변은 없습니다.

+0

http://www.openjs.com/scripts/events/keyboard_shortcuts/ – James

+0

감사합니다. 감사합니다. 왜 대답으로 게시하지 않았습니까? –

답변

5

LivePipe 컨트롤 패키지에서 사용할 수있는 HotKey 라이브러리는 Prototype과 호환되며 IE와 호환됩니다.

http://livepipe.net/extra/hotkey

+0

이 질문은 정확히 내가 뭘 찾고있는 것처럼 보이고 그 사이트에 다른 재미있는 것들이 많이 있기 때문에 답변을 수락 할 것입니다. 감사합니다! –

+0

지정되지 않은 수식어를 누르면 (예 : 지정된 ctrl + a, 눌려진 ctrl + shift + a, ctrl + a가 감지 된 경우) HotKey가 조합을 승인합니다. – eyelidlessness

+0

OS X를 발견하고 Ctrl/메타로 Ctrl을 대체하면 좋을 것입니다. – eyelidlessness

3

내가 할 일은 onKeyUp 이벤트를 document.body에 첨부하는 것입니다. 그런 다음이 이벤트 처리기에서 Element.fire 메서드를 사용하여 사용자 지정 이벤트를 발생시킵니다. 이 단계는 선택 사항이지만 수행 할 작업에서 이벤트 처리기를 분리하는 데 도움이되며 단추 클릭 이벤트와 같은 사용자 지정 이벤트 처리기를 사용할 수 있습니다.

$(button).observe("click", function() { 
    $(document.body).fire("myapp:mycoolevent"); 
}); 

는 지금까지 우려 보조 키를 처리하는 등, this resource을 확인 (아주 오래된,하지만 여전히 적용 보이는) 자세한 도움말 :

$(document.body).observe("keyup", function() { 
    if(/* key + modifier match */) { 
     $(document.body).fire("myapp:mycoolevent"); 
    } 
}); 

$(document.body).observe("myapp:mycoolevent", function() { 
    // Handle event. 
}); 

나중에 버튼 클릭으로 동일한 이벤트를 바인딩 .

+0

키 업에 문제가있는 것 같습니다. 적어도 OS X에서는 (하지만 Windows와 대부분의 Linux WM에서도 마찬가지입니다) 대부분의 주요 명령은 keydown에서 활성화됩니다. 단축키에 대한 기대치 (적절한 확인 포함)는 단축키에 대한 특정 기대치를 적용합니다. 수정 자 키가 먼저 있어야하며 단축키 당 하나의 인쇄 가능한 키만 있어야합니다. – eyelidlessness

4

JimmyP는 주석으로이 게시하지만 투표 목적에 대한 해답이 될 만하다.

http://www.openjs.com/scripts/events/keyboard_shortcuts/

+0

그 이유는 내가 그에게 대답으로 게시하지 않은 이유를 물었던 이유입니다. Upvoted. –

+1

그 이유는 그것을 대답으로 게시 한 이유입니다. ;) 그리고 커뮤니티 위키를 올렸습니다. 왜냐하면 그것이 내 포인트가 아니기 때문입니다. – eyelidlessness

2

는 사용하기 쉽고 및 jQuery를에 의존하지 않는, 또한 jwerty라는 새로운 자바 스크립트 라이브러리가있다.

+0

감사합니다 awoodland;) –

6

그냥 다른 것을 믹스에 넣을 것이라고 생각했습니다. 최근에 쥐덫이라는 라이브러리를 발표했습니다. 체크 아웃 : http://craig.is/killing/mice

관련 문제