JS의 키보드 이벤트와 관련된 문제가 있습니다. 모든JS - 키보드 이벤트 - 듣기/듣기 취소
첫째, jQuery를 방법을 사용하는 내 질문에 대답하지 마십시오, 나는 그것의 대부분을 알고 (바인드/언 바인드, 온/오프, 한 ...)하지만 난에이 내부 프레임 워크와 함께 작동 대부분의 프로젝트에서 jQuery가 사용 되더라도 jQuery없이 작업하십시오 ().
사실 저는 Swipe.js을 기반으로 한 스 와이프 도구가 있으며 웹 및 모바일 환경에서 작동하도록 확장되었습니다 (Internet Explorer 7 이상, WebKit (Safari Chrome &), Moz, Opera 및 IE10/Windows 전화 번호)
마우스/터치 이벤트에 아무런 문제가 없다면 the mobile HTML5 BP에서 영감을 얻은 바인딩 및 바인딩 해제 방법은 detachEvents 메소드에 대한 작은 수정으로 매우 잘 작동하는 것 같습니다.
그리고 나서 'keydown'이벤트를 기반으로 키보드 컨트롤 기능을 구현할 것입니다. 은 (BTW, 나는 작은 스크롤 효과를 방지하지 않습니다()는 keypressEvent.preventDefault 제외 keydon 키 누르기 이벤트 사이 좋은 차이를 만들 확실하지 않다, 그래서를 keyDown 사용합니다.)
은 추가 할 수 있습니다으로 같은 페이지에서 많은 스 와이프를하고, 스 와이프에 집중할 때만 키 입력 이벤트를 듣기 시작합니다 (요소에 초점을 맞출 수 있도록 "tabindex"속성을 추가합니다). 스 와이프는 'touchstart'를 처리하는 다음
<div id="swipe1" class="swipe" tabindex='0'>
<ul>
[...]
</ul>
</div>
/'클릭'/ 'MSPointerDown'이벤트, 나는 그것을 초점 :
onTouchStart: function(e) {
this.container.focus(); // Refers to the div#swipe1.swipe element
[...]
return false;
}
onFocus: function (e) {
if (this.activateKeyboardControls) { // Keyboard control is optional
this.addListener(document, 'keydown', this, true);
}
}
onBlur: function (e) {
if (this.activateKeyboardControls) { // Keyboard control is optional
this.removeListener(document, 'keydown', this, true);
}
}
그러나 불행하게도의 removeListener이 작동하지 않습니다. 이 문서 객체에 바인더 제본되어 있기 때문에 요소 (흐림 이벤트가 발생), 그것은 여전히를 keyDown 이벤트를 처리 포커스를 잃었을
내 말은 ...
가 있습니까? 일부 불리언으로 작업하는 몇 가지 해결책을 읽었지 만 관리하기가 더 깨끗한 방법을 찾고 있습니다.
많은 수의 스 와이프에 집중할 때 키보드를 누를 때 각 스 와이프가 스 와이프하고 있기 때문에 이것은 성가신 일입니다.
미리 감사드립니다. 2 주 이상 게시 후 - -