Domanda

Molto semplice:

E 'possibile per evitare che il browser di scorrimento quando un utente preme i tasti freccia?

È stato utile?

Soluzione

Molto semplice:. Sì, ma non lo fanno

Modifica operazione fondamentale di come un browser funziona solo confonde o fa arrabbiare gli utenti, e rende l'intera esperienza meno user-friendly. L'utente dovrebbe avere il massimo controllo del modo in cui la sua o le sue funzioni del browser, non tu. Questo è simile a bloccare le voci di menu da cui si accede, o la rimozione di contesto menu, ecc.

Altri suggerimenti

Sì. usare qualcosa come:     document.getElementById ( 'TuoID') 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;
    }
}

Anche se non può essere una buona idea di farlo. tanto per essere sicuro che non state affaccia su un approccio migliore.

Sembra molti dicono di non rompere ciò che fa il browser.

direi lo stesso, a meno che non lo si sostituisce con una funzionalità simile o migliore.

Mi capita spesso di uccidere il rotolo tastiera in elementi con un overflow perché ho aggiunto un evento di tastiera per l'elemento in cui si utilizza la tastiera "down" e "up" chiavi seleziona gli elementi (pensare a una finestra di explorer finder o Windows) .

Il rotolo di default ha reso l'interazione tutta whacky. Se l'articolo in alto sono stati selezionati, allora si chiave 'down', è necessario selezionare la voce successiva, ma poi scorrere l'elemento verso il basso e nascondere ciò che è stato appena selezionato.

Quindi mi rompere il rotolo di default, e poi aggiungo la mia per scorrere fino alla voce selezionata se è al di sotto (o sopra) la vista scorrimento corrente. In questo modo si comporta esattamente come qualsiasi sistema operativo là fuori quando chiave-ing su e giù attraverso i file.

Solo dicendo, rompere tutto quello che volete, ma assicuratevi di sapere il motivo per cui si sta rompendo e l'utente non si accorge di nulla.

in jQuery si potrebbe fare:

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

Probabilmente, ma di solito non è una buona idea per rompere una convenzione che tutti conoscono e capisce: D

ascoltare l'evento KeyDown e prevenire il comportamento predefinito.

In jquery

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

In JQuery

$("*").keypress(function(e){e.preventDefault(); return false;});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top