2012-11-26 7 views
0

Disable arrow key scrolling in users browser 제타 화살표 키를 사용하지 않도록 설정하는 방법에 대한 정확한 답을 받았다 활성화합니다.일단 해제 화살표 키 스크롤은 사용자 브라우저에서, 어떻게

는 나는 그것의 불가능 한 번 화살표 키 탐색을 다시 활성화해야합니다.

$('main navigation').has('drop down').bind('keyup', function (e) { 
    if (e.keyCode == 40) {hover(e,$(this));} //Down Arrow Key press, how mega menu 
    if (e.keyCode == 38) {unhover(e);} //Up Arrow Key Press, hide mega menu 
    if (e.keyCode == 9) {checkTab();} //check if tab pressed 
} 

var checkTab = function(){ 
     // i check, if tab focus to the main menu anchor 
    if($('main navigation').is(':focus')){ 
     var keys = []; 
     window.addEventListener("keydown", 
      function(e){ 
       keys[e.keyCode] = true; 
       switch(e.keyCode){ 
        case 37: case 39: case 38: case 40: // Arrow keys 
        case 32: e.preventDefault(); break; // Space 
        default: break; // do not block other keys 
       } 
      }, 
     false); 
     window.addEventListener('keyup', 
      function(e){ 
       keys[e.keyCode] = false; 
      }, 
     false);    
     console.log('focused') 
    } 
    else { 
     console.log('f out')  
    }     
} 

이 작업은 정상적으로 작동하지만 바인드 window.event를 사용하지 않도록 설정할 수 있습니다. 일단 사용할 수 없으면 사용할 수 없습니다. 이 시점에서 도움이 필요합니다.

+0

그냥'keydown' 리스너를 분리하십시오 ... – Bergi

답변

1

다른 변수를 사용하여 현재 화살표 키를 차단해야하는지 여부를 결정하십시오.

var useArrowKeysToScroll = false; 

/* ... */ 
function(e){ 
    keys[e.keyCode] = true; 
    if(!useArrowKeysToScroll && 
      ((e.keyCode >= 37 && e.keyCode <= 40) || 
      e.keyCode == 32)){ 
     e.preventDefault(); 
    } 
    /* handle other keys etc... */ 
}, /* ... */ 

useArrowKeysToScroll이 거짓이면 화살표 키와 스페이스 바가 스크롤되지 않습니다.

1

당신은이 문제를 해결하기 위해 켜기/끄기 사용 jQuery를 사용할 수 있습니다 ..

먼저 그렇게처럼를 keyDown를 부착 .. 그리고

$('window').on('keydown', function(){ 
     //Your Function Here 
     }); 

이렇게, 분리 ...

$('window').off('keydown');