Pergunta

Muito simples:

É possível evitar que o navegador rolagem quando um usuário pressionou as setas?

Foi útil?

Solução

Muito simples:. Sim, mas não fazê-lo

Alterar operação fundamental de como um navegador opera apenas confunde ou Angers usuários, e faz com que toda a experiência menos user-friendly. O usuário deve ter o controle final do caminho as suas funções de navegador, não você. Isto é semelhante ao bloqueio de itens de menu de ser acessado, ou removendo contexto menus etc.

Outras dicas

Sim. usar algo como: document.getElementById ( 'yourID') onkeypress = HandleKeyPress;.

function HandleKeyPress(e) {
    var e = e || window.event;
    switch (e.keyCode) {

        case e.DOM_VK_LEFT:
        case e.DOM_VK_RIGHT:
        case e.DOM_VK_UP:
        case e.DOM_VK_DOWN:
            if (e.preventDefault)
                e.preventDefault();
            else e.returnValue = false;
    }
}

Embora possa não ser uma boa idéia para fazê-lo. apenas a certeza de que você não está com vista para uma melhor abordagem.

Parece muitos estão dizendo para não quebrar o que o navegador faz.

Eu diria o mesmo, a menos que você está substituindo-o por uma funcionalidade semelhante ou melhor.

Eu freqüentemente matar a rolagem do teclado em elementos com um estouro, porque eu adicionei um evento de teclado para o elemento onde o uso do teclado "para baixo" e "para cima" chaves seleciona os itens (pense em um localizador ou o Windows Explorer janela) .

O pergaminho padrão feita a interação tudo whacky. Se o item do topo foram selecionados, então você tecla 'para baixo', que iria selecionar o próximo item, mas em seguida, role o elemento para baixo e esconder o que estava selecionado.

Então eu quebrar a rolagem padrão, e depois adicionar o meu próprio para se deslocar para o item selecionado se estiver abaixo (ou acima) da vista de rolagem atual. Dessa forma, ele se comporta exatamente como qualquer sistema operacional lá fora quando a chave-ing cima e para baixo através de arquivos.

Apenas dizendo, quebrá-lo o quanto quiser, mas certifique-se que você sabe por que você está quebrando-o e o usuário não percebe nada.

em jQuery você pode fazer:

$().keydown(function(e) { return e.keyCode != 38 && e.keyCode != 40; });

Provavelmente, mas não é geralmente uma boa idéia para quebrar uma convenção que todo mundo sabe e entende: D

ouvir o evento keydown e prevenir o comportamento padrão.

Em jQuery

$(document).on('keydown.yournamespace', function(e) {e.preventDefault();});

Em JQuery

$("*").keypress(function(e){e.preventDefault(); return false;});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top