2013-08-19 3 views
8

나는 keydown 이벤트를 사용하지 않고 CTRLSHIFT 키를 누를 수 있는지 궁금해했습니다. keydown 이벤트없이 CTRL 및 SHIFT 키를 감지합니까?

이유

내가 자바 스크립트에서 그리드 뷰어의 일종을 만드는 오전이다, 나는 CTRL 또는 SHIFT 키는 등 가장 일반적인 뷰어, 편집기와의 함수로를 잡고 다른 항목을 선택 구현했습니다.

문제는 초점이 페이지의 어느 부분에도없는 경우입니다. 예를 들어 북마크에 페이지를 추가하려고합니다. 그런 다음 CTRL 또는 SHIFT을 누르고 항목을 클릭하지만 keydown이 트리거되지 않았으므로 정상적으로 작동합니다.

이것을 생략 할 수있는 방법은 무엇입니까? 아마도 그렇지는 않지만 내 자신의 명백한 버그로 취급하는 고객에게는 혼란 스러울 수 있습니다.

+0

그들은 당신의 버그로 취급한다면 그것은 그들의 잘못입니다. 그들이 당신의 페이지를 집중하고 싶지 않다면, 그들은 당신의 특징을 얻지 못합니다. – Ian

+2

당신은'onclick' 핸들러에서 그 키를 탐지 할 수 있습니다 ... – Teemu

+1

@Teemu 좋은 지적입니다. 'keydown' 이벤트가 왜 사용되는지 잘 모르겠습니다. 모든 것을 클릭 지점에서 확인해야합니다. – Ian

답변

15

당신은 시프트, Ctrl 키를 감지하기 위해 모든에서 모든 키 이벤트를하지 않아도 마우스가 MDN 클릭Alt 키.

element.addEventListener('click', function (e) { 
    console.log(e.shiftKey); 
    console.log(e.ctrlKey); 
    console.log(e.altKey); 
}); 

A demo at jsFiddle :

이벤트 객체는이 정보가 포함되어 있습니다.

이러한 속성은 키보드 이벤트 처리기에서도 읽을 수 있습니다.

관련 문제