0

ユーザーのブラウザで矢印キーのスクロールを無効に する Zeta は、矢印キーを無効にする方法について正しい答えを与えられました。

無効にした矢印キー ナビゲーションを再度有効にする必要があります。

$('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 をバインドして無効にしているためです。一度無効にすると、有効にすることはできません。この点で助けが必要です。

4

2 に答える 2

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が false の場合、矢印キーとスペース バーはスクロールしません。

于 2012-11-26T19:25:17.290 に答える
1

これを解決するには、Jquery のオン/オフを使用できます。

最初にキーダウンを次のように取り付けます..

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

次に、デタッチするには、これを行います...

$('window').off('keydown');
于 2012-11-26T17:41:25.107 に答える