Domanda

Posso evitare numeri magici quando si abbinano i tasti premuti in javascript?

Un esempio potrebbe essere l'uso di 13 per abbinare la chiave di invio .

Potrei specificare le mie costanti, ma non so se questi valori siano abbastanza stabili su piattaforme / browser / locali diversi.

È stato utile?

Soluzione

La prima volta che ho provato a farlo, ho usato il metodo charCodeAt di String. Ad esempio, se desideri rilevare la stampa di " a " chiave:

if ("A".charCodeAt(0) == event.keyCode) {
  /* Do stuff here. */
}

Nota che ho usato il maiuscolo " A " invece di " a " ;. Questo perché event.keyCode viene riportato solo come valore Unicode della lettera maiuscola (se si tratta di una chiave alfa). Ciò che rende questo problema un po 'peloso è che ci sono diversi modi per ottenere il valore Unicode per il tasto che è stato premuto. In Firefox hai:

  • event.keyCode
  • event.charCode
  • event.which

Secondo la documentazione dello sviluppatore Mozilla, il valore Unicode della chiave verrà archiviato in event.keyCode o event.charCode , ma non entrambi . Indipendentemente da quale sia il codice, verrà anche memorizzato in event.which . Tuttavia, se il valore è memorizzato in charCode, sarà sensibile al maiuscolo / minuscolo. Pertanto, a seconda di dove ottieni i tuoi eventi, potresti dover verificare entrambi contro " a " e "A". Se hai il lusso di ottenere il tuo evento chiave solo da " onkeydown " e stai prendendo di mira Firefox, puoi contare su come impostare il codice maiuscolo (maiuscolo) impostato in event.keyCode. In effetti, l'ho provato su Firefox 3.0.3 su Windows XP, Firefox 3.0.4 su MacOS 10.4, Safari 3.2.1 su MacOS 10.4 e OmniWeb 5.8 su MacOS 10.4, e tutto funziona allo stesso modo. Tuttavia, non ho provato questo su nessuna delle versioni di IE, o Opera, ecc.

Se vuoi svilupparlo da zero. Suggerirei di ottenere tutti i diversi browser che puoi trovare su tutti i diversi sistemi operativi a cui hai accesso e di fare alcuni esperimenti per scoprire come ciascun browser riporta i codici chiave. Tuttavia, qualcuno ha già fatto quel lavoro. È stata anche menzionata in una delle risposte a la domanda che hai collegato come esempio! È un plug-in per jQuery chiamato js-hotkeys . Consente di registrare le funzioni di richiamata da eseguire quando si preme un tasto o una combinazione di tasti. Un esempio di utilizzo che ho copiato dal sito del progetto:

$(document).bind('keydown', 'Ctrl+a', fn);

È stato testato per funzionare su una varietà di browser / piattaforme diverse, quindi se stai usando jQuery, questa è probabilmente la strada da percorrere. Se non vuoi usare jQuery per qualche motivo, non sei sfortunato. Apparentemente si basava su un altro script che invece potresti usare. Non ho ancora utilizzato personalmente nessuna di queste librerie, quindi non posso garantire la loro facilità d'uso o efficacia. Detto questo, se avessi il tuo problema, questa è la direzione in cui vorrei cercare di risolverlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top