Controllare un elemento html con la tastiera

Non serve quasi a niente, lo so. Però possiamo farlo, quindi facciamolo. Google Maps permette, attraverso un'apposito parametro, di attivare la navigazione attraverso le classiche "frecce" della tastiera. Allo stesso modo è possibile controllare e modificare il posizionamento di un elemento HTML (immagine, div, quello-che-vi-pare) intercettando la pressione dei tasti (qualsiasi tasto voi vogliate, non solo le frecce) utilizzando qualche riga di JavaScript.

LE BASI
Questo semplice script, inserito in una pagina HTML, permette di visualizzare il keycode di ogni tasto presente sulla vostra tastiera:

// All'evento "onkeydown" viene chiamata la funzione sposta()
document.onkeydown = sposta;  	
 
function sposta(e)
{
     var codice; 		
 
     // Internet Explorer o Firefox?
     // Intercetto l'evento e lo metto nella variabile "codice"
     if (window.event) codice = window.event.keyCode;
     else if (e) codice = e.which;
 
     // Alert del codice
     alert(codice);
}

Vedrete che ogni tasto ha un codice diverso. Nel nostro caso ci interessano i 4 codici relativi alle frecce direzionali:

  • Sinistra: 37
  • Giù: 40
  • Destra: 39
  • Su: 38

Vediamo ora come utilizzare questi codici per muovere una div: la funzione è simile a quella appena vista, alla pressione del tasto viene controllato il codice ritornato e se corrisponde ad uno dei 4 codici delle "frecce" viene modificato il CSS della DIV di conseguenza.

MUOVERE UNA DIV
Come al solito è più facile vedere un esempio che spiegare a parole il funzionamento: il CSS della DIV viene modificato a seconda del tasto premuto.

// All'evento "onkeydown" viene chiamata la funzione sposta()
document.onkeydown = sposta;  	
 
function sposta(e)
{
	var codice;
	var next;
 
	// Internet Explorer o Firefox?
	// Intercetto l'evento e lo metto nella variabile "codice"
	if (window.event) codice = window.event.keyCode;
	else if (e) codice = e.which;
 
	// Vari casi:
	switch(codice)
	{
		// Freccia su
		case 38:
			next = parseInt($("rosso").style.top) - 5;
			$("rosso").style.top = next + "px";
		break;
 
		// Freccia sinistra
		case 37:
			next = parseInt($("rosso").style.left) - 5;
			$("rosso").style.left = next + "px";
		break;
 
		// Freccia destra
		case 39:
			next = parseInt($("rosso").style.left) + 5;
			$("rosso").style.left = next + "px";
		break;
 
		// Freccia giù
		case 40:
			next = parseInt($("rosso").style.top) + 5;
			$("rosso").style.top = next + "px";
		break;
 
		default: void(0);
	}
}

Facile no? La variabile next viene usata come appoggio per calcolare il valore in pixel della proprietà top o left che la DIV, posizionata "absolute" andrà ad assumere.

Gli usi sono pressoché infiniti se ci si ragiona un po' su: navigazione di immagini, giochini, ecc... Nell'esempio non vengono considerati i bordi della pagina: come dicono all'università "ve lo lascio come esercizio".

:mrgreen:

OCCHIO!
Il post non mostra correttamente la riga next + "px", mostra solamente next "px". Se volete copiare il codice, copiatelo dall'esempio...

,
1 Star2 Stars3 Stars4 Stars5 Stars Vota!
Loading ... Loading ...
Condividi

Articoli che potrebbero interessarti

Controllare più PC con una tastiera e un mouse
Un post al mese…
Carta dei diritti dei programmatori
Una piccola stampante
Passando la serata a formattare

8 Commenti per “Controllare un elemento html con la tastiera”

  1. MyAvatars 0.2 Senza Identità ha detto:

    l’uso di prototype oramai si sottintende? :-D

  2. MyAvatars 0.2 Raffaele :: CreativeBits ha detto:

    Fantastico, è da un po’ che cercavo una bella guida in italiano! :)

  3. MyAvatars 0.2 Napolux ha detto:

    @Senza Identità
    Dove vedi prototype nell’esempio? O forse ho capito male io ;)

  4. MyAvatars 0.2 Senza Identità ha detto:

    scusa ho visto solo ora che hai definito la funzione $ , pensavo avessi usato prototype.js ;-)

  5. MyAvatars 0.2 Napolux ha detto:

    La $() di prototype è molto più figa. Ma aggiungere tutto quel JS per una sola funzione non mi sembrava il caso.

  6. MyAvatars 0.2 Andrea Micheloni ha detto:

    Bel tutorial, complimenti :)

  7. MyAvatars 0.2 Giorgio Zanetti ha detto:

    Bravo, ottimo post! :-)

  8. MyAvatars 0.2 Zanblog.it di Giorgio Zanetti » Zlink! /032 ha detto:

    [...] Controllare un elemento html con la tastiera Un interessante e chiaro tutorial di Napolux. estensioni, firefox, html, impress, musica, openoffice, zlink!categorie: Software, Musica, Informatica, tecnologia, Internet, Zlink!, HTML & C. Commenti » [...]

Lascia un commento



Chiudi
Invia e-mail