Computer finestre Internet

Documenta gli eventi javascript. JavaScript - Tipi di eventi. Collega gli eventi agli elementi corretti

Il tema degli eventi è molto importante e molto interessante. Grazie a lei, puoi fare molte cose interessanti di cui l'utente sarà felice. Evento JavaScriptè un'azione specifica che viene attivata dall'utente o dal browser. Ad esempio, un evento può essere un clic del mouse su un pulsante, il movimento del mouse, la focalizzazione su un elemento, la modifica di un valore in un campo di testo, la modifica delle dimensioni della finestra del browser e così via.

Ho preparato una tabella con tutti gli eventi (che conosco almeno) in JavaScript... In esso troverai, in primo luogo, il nome dell'evento, gli elementi che possono generare questo evento e la descrizione dell'evento stesso. Eventi JavaScript.

Evento Un oggetto Causa dell'evento
InterrompiImmagineInterruzione del caricamento dell'immagine
SfocaturaPerdita di messa a fuoco di un elemento
ModificareFileCarica, Seleziona, Testo, Area di testoCambio di valore
ClicArea, Pulsante, Casella di controllo, Documento, Collegamento, Radio, Reimposta, InviaFare clic con il mouse su un elemento
Doppio clicArea, Documento, LinkFare doppio clic su un elemento
Trascina e rilasciaFinestraSposta nella finestra del browser
Messa a fuocoPulsante, Casella di controllo, Caricamento file, Cornice, Livello, Password, Radio, Ripristina, Seleziona, Invia, Testo, Area di testo, FinestraMettere a fuoco un elemento
Tasto giùPremendo un tasto sulla tastiera
KeyPressDocumento, immagine, collegamento, area di testoTenere premuto un tasto sulla tastiera
KeyUpDocumento, immagine, collegamento, area di testoRilascio di un tasto sulla tastiera
CaricoDocumento, immagine, livello, finestra
MouseGiùPulsante, documento, collegamentoPulsante del mouse premuto
MouseMoveFinestraMouse in movimento
MouseOutArea, livello, collegamentoIl mouse è fuori dai limiti dell'elemento
Passa il mouseArea, livello, collegamentoIl mouse è sull'elemento
MouseUpPulsante, documento, collegamentoPulsante del mouse rilasciato
SpostarePortafotoSpostare un oggetto
RipristinaModuloRipristino del modulo
RidimensionaCornice, finestraRidimensionamento
SelezionareTesto, Area di testoSelezione del testo
InviaModuloTrasferimento dati
ScaricareFinestraScaricare la pagina corrente

Ora scopriamo come usa gli eventi in JavaScript... Ci sono i cosiddetti gestori di eventi. Gestori di eventi basta determinare cosa accadrà quando si verifica un determinato evento. Gestori di eventi JavaScript ha la seguente forma generale:

SuNomeEventi

Cioè, prima viene il prefisso " Su", quindi qual è il prossimo? nome dell'evento, per esempio, tale gestori di eventi: suFocus, al clic, suSubmit eccetera. Penso che qui non ci fossero domande. E ora la domanda principale: " Come si utilizzano gli eventi in JavaScript?". L'area della loro applicazione è enorme e ora considereremo un problema con te. Ci sono tre collegamenti nella pagina. Ciascuno dei collegamenti è responsabile di un diverso colore di sfondo (ad esempio bianco, giallo e verde ). Inizialmente, lo sfondo è bianco. Quando si passa il mouse su un determinato collegamento, il colore di sfondo cambia. Al passaggio del mouse, il colore di sfondo torna al valore predefinito. Quando si fa clic con il mouse sul collegamento, il colore di sfondo viene mantenuto come predefinito.







bianco
Giallo
Verde

Affrontiamo questo copione, anzi del tutto Pagina HTML con il supporto JavaScript e CSS(in altre parole, questo è un esempio DHTML). I soliti prima di tutto Tag HTML, con cui qualsiasi inizia Pagina HTML... Successivamente, creiamo uno stile in cui richiediamo che tutti i collegamenti in questa pagina siano blu, sottolineati e che il puntatore del mouse su di essi abbia la forma di "Puntatore". Potresti dire: "Perché hai bisogno di impostare lo stile? Dopotutto, i collegamenti saranno comunque esattamente gli stessi". Esatto, link, ma non abbiamo link in quanto tali (dopotutto, non ci sono attributi href nel tag), quindi per impostazione predefinita saranno solo testo nero (sebbene sia possibile fare clic anche sul testo). Pertanto, lo stile è un must. Puoi rimuoverlo e vedere cosa succede. Meglio ancora, metti attributo href(qualsiasi valore, anche vuoto) e spiega perché lo script ha smesso di funzionare. Inoltre inizia già JavaScript... Creiamo una variabile default_color che è responsabile del colore predefinito. Ci sono poi tre funzioni:

Funzione setTempColor() responsabile del cambio di colore temporaneo.

Funzione setDefaultColor() responsabile della modifica del colore predefinito.

Funzione defaultColore () imposta il colore di sfondo predefinito.

Poi ci sono collegamenti con attributi nel modulo gestori di eventi... Quando passi il mouse sul link, Evento MouseOver, rispettivamente, Gestore di eventi onMouseOver chiama la funzione setTempColor() e passa il parametro corrispondente. Quando rimuovi il mouse dall'elemento, Evento MouseOut, e poi chiamato defaultColor() funzione, che rende il colore di sfondo predefinito. E infine, quando fai clic sul collegamento ( Gestore onClick) la funzione si chiama setDefaultColor(), che imposta il colore specificato nel parametro sul colore di sfondo predefinito. Come puoi vedere, tutto è abbastanza semplice.

Era il principio dell'uso degli eventi in JavaScript, e poi tutto dipende solo dalla tua immaginazione!

La capacità di JavaScript di creare pagine html dinamiche si basa su tre pilastri. Due di questi sono già stati trattati in articoli precedenti. E il terzo sono gli eventi.

  • Gestione della finestra del browser - utilizzando l'oggetto finestra.
  • La gestione degli oggetti all'interno di una finestra è il DOM.
  • Esecuzione di codice javaScript sugli eventi.

Evento- la reazione del computer all'azione dell'utente. Ad esempio, con t. Un evento javaScript è considerato la pressione di un pulsante della tastiera, il movimento e i clic del mouse e la chiusura della finestra del browser. Tutti gli eventi con t. javaScript è generato da oggetti documento e browser (nessun concetto di 'utente'). Ad esempio, quando si fa clic su un paragrafo, l'evento clic del mouse viene generato da un oggetto, un paragrafo.

Per poter eseguire del codice javaScript che risponda agli eventi, è necessario associare questo codice a un evento generato da un oggetto specifico, ad es. con un evento specifico da un oggetto specifico. Questa azione si chiama - abbonamento all'evento.

Sottoscrizione significa che associamo una funzione a un evento specifico da un oggetto specifico nel modello a oggetti del browser. E quando questo oggetto crea (genera) questo evento, questa funzione si attiverà automaticamente.

  • onclick - facendo clic su un pulsante del mouse.
  • ondblclick - doppio clic del pulsante del mouse.
  • onmousedown - il pulsante del mouse viene premuto (down).
  • onmousemove - il mouse si sposta sull'oggetto (si verificano molti eventi, movimento del mouse di 1px = 1 evento).
  • onmouseout - il mouse lascia l'oggetto.
  • onmouseover: il mouse si sposta sull'oggetto desiderato.
  • onmouseup - il pulsante del mouse viene rilasciato (sollevato).
  • onkeydown - pulsante della tastiera premuto (giù).
  • onkeypress - premendo un pulsante della tastiera.
  • onkeyup - il pulsante della tastiera viene rilasciato (sollevato).
  • onblur - perdita della messa a fuoco dell'input (cursore lampeggiante).
  • onfocus - il momento in cui questo elemento riceve il focus dell'input.
  • onchange - generato dal controllo dopo aver perso lo stato attivo, se il testo è cambiato (ad esempio, in una casella di testo). Un'eccezione è la voce di elenco "seleziona", in cui questo evento viene generato immediatamente e non dopo la perdita del focus.
  • onload - generato quando la pagina ha terminato il caricamento nella finestra. Solitamente utilizzato quando è necessario eseguire del codice javaScript dopo che la pagina è stata completamente caricata.
  • onunload - si verifica prima che il documento venga scaricato dalla finestra (cioè quando chiudiamo questo documento o passiamo a un altro documento).
  • onreset - il modulo è stato ripristinato.
  • onsubmit - il modulo dati è stato inviato.

Abbonamento agli eventi

  • Abbonamento tramite javaScript. Questo metodo viene utilizzato nella maggior parte dei casi. Per prima cosa dobbiamo trovare l'oggetto dell'elemento per il quale vogliamo sottoscrivere l'evento, ad esempio, tramite il metodo getElementById (specificare l'id dell'elemento richiesto).
funzione myFunc() ( // ho creato una semplice funzione avviso ("ciao"); ) function pageInit() (var p = document. getElementById ("1"); p. onclick = myFunc;) // chiamato la funzione per attivare l'evento finestra. onload = pageInit; // l'evento verrà attivato quando la pagina viene caricata < p id= 1 >Paragrafo 1 // imposta l'id per il paragrafo
  • Abbonamento tramite codice html. Lo svantaggio di questo metodo è che ingombra il codice html con il suo codice javaScript; inoltre, ci sono diverse limitazioni e in casi complessi è scomodo da usare.
< script type= "text/javascript" >funzione myFunc() ( // ho creato una semplice funzione avviso ("ciao"); ) < p onclick= "myFunc()" >Paragrafo 2 // chiamato la funzione

Modello di gestione degli eventi

Quando si verifica un evento per un elemento, dovrebbero verificarsi anche eventi simili per tutti i suoi elementi padre fino alla parte superiore della pagina (fino a "corpo", poiché è l'area principale del documento). Quindi, qualsiasi evento che si verifica nella pagina verrà attivato sul corpo.

Quindi sorge la domanda, in quale ordine si verificheranno tali eventi? Nei browser moderni, il modello di gestione degli eventi è chiamato modello a bolle a bolle. La sua essenza: in primo luogo, si verifica un evento per l'elemento su cui è stato fatto clic, quindi per il suo genitore e così via fino in cima, fino al "corpo".

Elemento -> elemento 2 -> documento -> finestra

Parametri evento (oggetto evento)

C'è un tale oggetto evento che ha molte proprietà. Leggendo queste proprietà, è possibile ottenere informazioni sugli eventi. Per ottenere informazioni, devi prima ottenere l'oggetto stesso.

Il principale proprietà di questo oggetto:

  • x, y - coordinate del mouse al momento dell'evento.
  • clientX, clientY sono gli stessi.
  • offsetX, offsetY - lo stesso, ma questo è l'offset del mouse rispetto all'elemento genitore.
  • screenX, screenY - coordinate dello schermo.
  • pulsante - quale pulsante del mouse è stato premuto (0 - non premuto, 1 - pulsante sinistro premuto, 2 - pulsante destro premuto, 4 - pulsante centrale premuto).
  • keyCode Il codice numerico del tasto della tastiera premuto.
  • srcElement - l'elemento che ha generato l'evento.
  • fromElement - l'elemento da cui si è allontanato il mouse.
  • toElement - un'indicazione dell'oggetto su cui è passato il mouse.
  • cancelBubble - un modo non standard, se gli dai il valore true, la "bolla pop-up" verrà cancellata; oppure è possibile modificare il codice del tasto premuto dall'utente.

Dall'autore: Dopo che la pagina Web è stata completamente caricata e pronta, viene attivata un'intera cascata di eventi in JavaScript, che diventa ancora maggiore quando l'utente inizia a interagire con la pagina in un modo o nell'altro. Gli eventi includono il caricamento di una pagina, lo scorrimento verso il basso, il clic su un pulsante o persino la compilazione di un modulo. Per attivare eventi in JavaScript, hai bisogno di un codice speciale che progetti e scrivi tu stesso, creando così un'interazione più profonda.

Gli eventi in JS possono essere suddivisi in 4 grandi gruppi:

Eventi dell'interfaccia utente: si attivano quando l'utente interagisce con l'interfaccia utente del browser (pulsanti intorno a una pagina Web che fanno parte dell'interfaccia del browser). Questi eventi possono includere anche quelle azioni che la pagina esegue indipendentemente dall'utente. Questi eventi includono il ridimensionamento della finestra, lo scorrimento della pagina e il caricamento e lo scaricamento del contenuto.

Eventi tastiera, mouse e touchscreen: vengono attivati ​​quando l'utente preme o rilascia i pulsanti sulla tastiera, controlla il mouse, il trackpad o utilizza il touchscreen.

Eventi di focus e handicap. Principalmente associato ai moduli: il campo di input "riceve il focus" quando l'utente è pronto per interagire con esso. Altri eventi tengono traccia degli invii dei moduli, delle modifiche ai valori dei campi del modulo e così via.

JavaScript. Avvio veloce

Eventi di mutazione e osservatori. Gli elementi mutanti vengono tracciati quando la struttura del DOM cambia: ad esempio, quando gli elementi della pagina vengono inseriti o rimossi dallo script.

Associazione di un gestore di eventi

Il codice personalizzato che si attiva solo per un elemento DOM specifico crea un gestore di eventi. Esistono tre modi in JS per creare un gestore di eventi:

1. Gestore di eventi HTML standard tramite attributi

Il metodo più antico di associazione degli eventi, uno dei più utilizzati finora. Il metodo utilizza attributi speciali nel markup. Per esempio:

< input type = "text" id = "username" onblur = "checkName()" >

Nell'esempio sopra, dopo che il campo riceve lo stato attivo e l'utente procede a compilare il campo successivo (ad esempio, utilizzando TAB o un normale clic), l'elemento chiamerà la funzione checkName, che è scritta in JS.
I gestori di eventi HTML standard non sono consigliati per l'uso nello sviluppo moderno, principalmente a causa del fatto che la funzionalità è mischiata con il markup, il che rende difficile lavorare ed eseguire il debug del codice.

2. Gestori di eventi standard nel DOM

Questa tecnica separa JS e markup, ma ha la stessa limitazione: solo una funzione può essere assegnata agli eventi. L'equivalente HTML di un gestore di eventi nel DOM sarebbe:

var username = document.getElementbyId ("nome utente"); username.onblur = checkName;

nome utente. onblur = checkName;

JavaScript. Avvio veloce

Impara le basi di JavaScript con un esempio pratico di creazione di un'applicazione web

Come nell'esempio precedente, la funzione checkName viene eseguita dopo che l'elemento del form perde lo stato attivo.

3. Ascoltatori di eventi

Un metodo moderno per aggiungere un gestore di eventi, che consente di concatenare più eventi e funzioni:

var username = document.getElementbyId ("nome utente"); username.addEventListener ("blur", checkName, false);

var nome utente = documento. getElementbyId ("nome utente");

nome utente. addEventListener ("blur", checkName, false);

Il valore booleano alla fine indica se acquisire l'evento. Di solito impostato su false. Negli script semplici, un evento viene spesso scritto come una funzione anonima:

var username = document.getElementbyId ("nome utente"); username.addEventListener ("sfocatura", funzione () (// azioni per attivare l'evento))

Non tutti gli eventi sono uguali

È importante capire che non tutti gli eventi possono essere gestiti allo stesso modo. Gli eventi di scorrimento e ridimensionamento vengono attivati ​​molto spesso, motivo per cui è necessario prestare molta attenzione per non rallentare le prestazioni dello script. Lo stesso vale per eventi di input apparentemente innocui. Le prestazioni dello script possono essere gravemente ridotte se tenta di rispondere costantemente all'evento di input attivato di frequente sul dispositivo di scorrimento dell'intervallo.

Non tutti gli eventi vengono tracciati

Gli osservatori di mutazioni attualmente non possono tenere traccia di tutte le modifiche a tutti gli elementi della pagina. Ad esempio, non è possibile tenere traccia della modifica dell'altezza di un elemento (quando il contenitore si riduce in responsive design, il testo al suo interno si riorganizza e gli elementi si allungano). Ci sono ancora modi per tenere traccia delle modifiche, ne parlerò nel prossimo articolo.

Collega gli eventi agli elementi corretti

L'evento onclick si applica a molti elementi, inclusi i collegamenti. Esiste una regola generale: non è consigliabile allegare codice JS ai collegamenti. Facendo clic sul collegamento, l'utente dovrebbe passare a un'altra area del sito o a un'ancora. Se hai bisogno di un elemento dell'interfaccia utente che può essere utilizzato per modificare qualcosa nella stessa pagina, il pulsante fa per te. Puoi appendere JavaScript sul pulsante senza problemi.

Non usare JavaScript se puoi farlo con i CSS

Rispetto ai CSS, JavaScript è lento e inaffidabile. Fondamentalmente, i CSS dovrebbero essere usati come alternativa agli script complessi ove possibile. Tuttavia, i CSS non fanno tutto. Fa un buon lavoro con: hover (sostituisce gli eventi di tocco in molti casi) e può anche sostituire gli eventi di clic con: target in alcuni casi. Le animazioni CSS vengono attivate automaticamente dopo il caricamento della pagina e ci sono stati CSS speciali che possono essere attivati ​​per elementi come i pulsanti di opzione. Tuttavia, di solito è meglio lasciare qualcosa di più complesso a JavaScript.

Mentre lavora con la pagina, l'utente esegue varie azioni: fa clic sui pulsanti del mouse, inserisce il testo sulla tastiera. Ciascuna di queste azioni è un evento del browser. Può essere tracciato ed eseguito da alcune righe del programma quando si verificano. JavaScript ha gestori di eventi per questo. Oltre alle azioni dell'utente, ci sono altri eventi del browser come il caricamento dell'intera pagina.

Ogni evento ha il suo nome. clic è una pressione del pulsante sinistro del mouse, keydown è una pressione di un tasto, focus è il focus di un elemento del modulo,

Gestione degli eventi

Viene chiamata la funzione che viene eseguita quando viene attivato un evento gestore di eventi... Ogni tipo di evento ha il proprio gestore. Il nome del gestore è costituito dalla parola on e dal nome dell'evento. Ad esempio, il gestore dell'evento click si chiama onclick. Gli eventi non accadono sulla pagina in generale, ma su un elemento specifico. Di conseguenza, il gestore non è una funzione separata. Il gestore è posizionato su un elemento della pagina.

Esistono diversi modi per assegnare un gestore di eventi a un elemento. Puoi assegnare un gestore tramite l'attributo tag. Il codice da eseguire quando viene attivato l'evento è scritto nel valore dell'attributo. Creiamo una pagina, aggiungiamo un pulsante e le assegniamo un gestore di eventi click:

1
2
3
4
5
6
7

Pagina

JavaScript:

JavaScript:

17
18
19
20
21
22

var inform = function () (avviso ("Un altro pulsante");); var mbutton = document.getElementById ("mbutton"); mbutton.onclick = informa;

Quando una funzione viene assegnata a un gestore, non ci sono parentesi dopo il nome della funzione. Se metti le parentesi, allora non sarà un'assegnazione di funzione, ma una chiamata per l'esecuzione.

Esiste un metodo addEventListener() che assegna anche un gestore eventi a un elemento. È considerato più moderno. Non viene utilizzato molto spesso ora, ma ci sono nuovi eventi in JavaScript che possono essere gestiti solo utilizzando questo metodo.

element.addEventListener (evento, funzione)

Opzioni:

evento - un evento che deve essere elaborato

funzione - una funzione che diventa un gestore

Nei parametri di questo metodo, il nome dell'evento è scritto tra virgolette e non è necessario scrivere la parola prima di esso.

Codice HTML:

JavaScript:

24
25
26
27
28
29

var newinform = function() (avviso ("Nuovo pulsante premuto");); var nuovopulsante = document.getElementById ("nuovopulsante"); newbutton.addEventListener ("click", newinform);

Il metodo removeEventListener() consente di rimuovere un gestore.

element.removeEventListener (evento, funzione)

Utilizzando il metodo considerato, a un elemento possono essere assegnati più gestori per lo stesso evento. Quindi è necessario eliminare ciascuno di essi separatamente.

Oggetto evento

Ogni volta che viene attivato un evento, viene generato un oggetto evento. L'oggetto contiene informazioni sull'evento. Diversi tipi di eventi hanno oggetti diversi. Ma ci sono anche proprietà che ogni oggetto ha. Ad esempio, la proprietà type contiene il tipo dell'evento.

L'oggetto evento viene passato come parametro alla funzione che è il gestore. Per accedere all'oggetto, è necessario creare un parametro nella funzione. Questo parametro viene utilizzato per fare riferimento all'oggetto. Se la funzione richiede anche altri parametri, l'oggetto evento deve essere il primo parametro. Cambiamo il gestore per il pulsante con l'id uguale a "pulsante". Otteniamo l'accesso all'oggetto evento. Invece di un messaggio sulla pressione del pulsante, mostreremo il tipo di evento. Ora il gestore sarà simile a questo:

13
14
15
16

button.onclick = function (event) (alert (event.type););

Fare clic sul pulsante, verrà visualizzato il tipo di evento attivato.

Tutti gli oggetti evento hanno una proprietà currentTarget. Restituisce l'elemento che ha attivato l'evento. Questo può sembrare inutile. Dopotutto, il gestore è assegnato a un elemento specifico. Perché restituire di nuovo questo elemento? Ma con gli eventi del browser, le cose sono un po' più complicate. Imparerai come viene utilizzato un po 'più tardi. Considereremo altre proprietà quando studieremo eventi specifici.

Tipi di eventi

All'alba dello sviluppo del World Wide Web, gli sviluppatori web hanno dovuto affrontare solo un piccolo numero di eventi: "carica", "clic", "passa il mouse" e altri. Questi tipi di eventi abbastanza vecchi sono ben supportati da tutti i browser. Con l'evoluzione della piattaforma web, sono state incluse API più potenti e il numero di eventi è aumentato in modo significativo. Non esiste uno standard che definisca un set completo di eventi e il numero di eventi supportati continua a crescere rapidamente. Questi nuovi eventi sono identificati nelle seguenti due fonti:

    La specifica DOM Level 3 Events, che, dopo molti anni di stagnazione, ha iniziato a essere attivamente sviluppata sotto gli auspici del consorzio W3C.

    Molte delle nuove API nella specifica HTML5 (e relative specifiche aggiuntive) definiscono nuovi eventi utilizzati, ad esempio, per gestire la cronologia, trascinare e rilasciare, scambiare messaggi tra documenti e riprodurre audio e video.

Si noti che molti di questi nuovi tipi di eventi non sono ancora ampiamente supportati e sono definiti da standard ancora in fase di progettazione. Gli eventi che utilizzerai più spesso nelle tue applicazioni web di solito rientrano nella categoria di lunga data e supportati da tutti i browser: sono eventi per lavorare con il mouse, la tastiera, i moduli HTML e l'oggetto Window. Prenderemo in considerazione questi eventi.

Eventi di caricamento del documento

La maggior parte delle applicazioni Web ha assolutamente bisogno del browser Web per notificarle quando il documento ha terminato il caricamento ed è pronto per eseguire operazioni su di esso. Questo scopo è servito dall'evento carico nell'oggetto Finestra. L'evento load viene generato solo dopo che il documento e tutte le sue immagini sono state completamente caricate. Tuttavia, gli script di solito possono essere eseguiti subito dopo che il documento è stato analizzato, prima che le immagini vengano caricate. È possibile ridurre significativamente il tempo di avvio di un'applicazione Web avviando lo scripting su eventi diversi dal caricamento.

Evento DOMContentLoaded attivato non appena il documento è stato caricato, analizzato dal parser e tutti gli script posticipati sono stati eseguiti. A questo punto, le immagini e gli script con l'attributo asincrono possono continuare a essere caricati, ma il documento stesso sarà pronto per eseguire le operazioni. Questo evento è stato introdotto per la prima volta in Firefox e da allora è stato adottato da tutti gli altri produttori di browser, inclusa Microsoft, che ha aggiunto il supporto per questo evento in IE9. Nonostante il prefisso DOM nel nome, questo evento non fa parte dello standard DOM Level 3 Events, ma è standardizzato dalla specifica HTML5.

Durante il caricamento del documento, il valore della proprietà document.readyState cambia. Ogni modifica al valore di questa proprietà in IE è accompagnata da un evento readystatechange sull'oggetto Document, quindi in IE questo evento può essere utilizzato per determinare quando si verifica lo stato completo. La specifica HTML5 standardizza l'evento readystatechange, ma indica di attivarlo immediatamente prima dell'evento load, quindi non è del tutto chiaro quale sia il vantaggio dell'evento readystatechange sul carico.

L'esempio seguente definisce la funzione whenReady(). La funzione passata a whenReady() viene chiamata (come metodo dell'oggetto Document) non appena il documento è pronto per eseguire operazioni. whenReady() ascolta gli eventi DOMContentLoaded e readystatechange e utilizza l'evento load solo come fallback nel caso venga utilizzato in browser meno recenti che non supportano i primi due eventi. La funzione whenReady() verrà utilizzata in alcuni dei seguenti scenari:

/ * Passa la tua funzione a whenReady() e la chiamerà (come metodo dell'oggetto documento) non appena il documento sarà analizzato e pronto per eseguire operazioni. Le funzioni registrate vengono chiamate al primo evento DOMContentLoaded, readystatechange o load. Una volta che il documento è pronto e tutte le funzioni vengono chiamate, whenReady() chiamerà immediatamente tutte le funzioni che gli sono state passate. * / var whenReady = (function () (// Questa funzione viene restituita dalla funzione whenReady () var funcs =; // Funzioni da chiamare all'evento var ready = false; // Diventa vero quando viene chiamata la funzione del gestore / / Gestore di eventi , che viene chiamato non appena il documento // è pronto per eseguire operazioni gestore di funzione (e) (// Se il gestore è già stato chiamato, restituisci semplicemente il controllo se (pronto) return; // Se questo evento è readystatechange e lo stato è // eccellente da "completo", il che significa che il documento non è ancora pronto se (e.type === "readystatechange" && document.readyState! == "completo") return; // Chiama tutti i registrati funzioni. // Nota che ogni valore della // proprietà funcs.length viene controllato una volta, nel caso in cui una delle funzioni chiamate // registri funzioni aggiuntive.for (var i = 0; i

Eventi del mouse

Ci sono alcuni eventi associati al mouse. Sono tutti elencati nella tabella sottostante. Tutti gli eventi del mouse eccetto mouseenter e mouseleave vengono visualizzati. Gli eventi di clic sui collegamenti e i pulsanti di invio del modulo hanno azioni predefinite che possono essere annullate. È teoricamente possibile annullare l'evento del menu di scelta rapida e impedire la visualizzazione del menu di scelta rapida, ma alcuni browser hanno impostazioni che rendono questo evento non annullabile.

Eventi del mouse JavaScript
Tipo di Descrizione
clic Un evento di alto livello generato quando l'utente preme e rilascia un pulsante del mouse o attiva in altro modo un elemento.
menù contestuale Un evento annullabile che viene generato prima che venga visualizzato il menu di scelta rapida. I browser attuali visualizzano un menu di scelta rapida facendo clic con il pulsante destro del mouse, quindi questo evento può essere utilizzato anche come evento clic.
dblclick Attivato quando l'utente fa doppio clic.
mousedown Attivato quando l'utente preme il pulsante del mouse.
mouseup Attivato quando l'utente rilascia il pulsante del mouse.
mossa del mouse Generato quando l'utente sposta il puntatore del mouse.
passaggio del mouse Sollevato quando il puntatore del mouse è posizionato su un elemento. La proprietà relatedTarget (o fromElement in IE) identifica l'elemento da cui è stato spostato il puntatore del mouse.
toglie il mouse Sollevato quando il puntatore del mouse lascia l'elemento. La proprietà relatedTarget (o toElement in IE) specifica l'elemento su cui è stato spostato il puntatore del mouse.
mouseenter Simile al passaggio del mouse, ma non compare. È apparso per la prima volta in IE ed è stato standardizzato in HTML5, ma non ancora supportato da tutti i browser.
mouselascia Come mouseout, ma non compare. È apparso per la prima volta in IE ed è stato standardizzato in HTML5, ma non ancora supportato da tutti i browser.

L'oggetto passato ai gestori di eventi del mouse ha proprietà clienteX e clienteY che definiscono le coordinate del puntatore relative alla finestra. Per convertirli in coordinate del documento, è necessario aggiungere loro le posizioni della barra di scorrimento della finestra.

Proprietà tasto alt, ctrlKey, metaKey e tasto delle maiuscole definire gli stati dei vari tasti modificatori che possono essere stati tenuti premuti al momento dell'evento: possono essere utilizzati per distinguere un semplice clic da un clic con il tasto Maiusc premuto, ad esempio.

Proprietà pulsante determina quale pulsante del mouse è stato tenuto premuto al momento dell'evento. Tuttavia, browser diversi scrivono valori diversi su questa proprietà, quindi è difficile utilizzarla in modo portatile.

Alcuni browser generano l'evento click solo quando si fa clic sul pulsante sinistro. Pertanto, se è necessario gestire i clic di altri pulsanti, è necessario utilizzare gli eventi mousedown e mouseup. L'evento contextmenu di solito segnala che è stato eseguito un clic con il pulsante destro del mouse, ma come notato sopra, non è sempre possibile impedire la visualizzazione del menu contestuale nei gestori di questo evento.

L'esempio seguente mostra una funzione drag() che, quando viene chiamata da un gestore di eventi mousedown, consente all'utente di trascinare con il mouse elementi del documento posizionati in modo assoluto. La funzione drag() funziona con entrambi i modelli di eventi, DOM e IE.

La funzione drag() accetta due argomenti. Il primo è l'elemento che viene trascinato. Questo potrebbe essere l'elemento che ha generato l'evento mousedown e l'elemento che lo contiene (ad esempio, potresti lasciare che l'utente prenda un elemento che assomiglia al titolo di una finestra e trascini l'elemento contenitore che assomiglia a una finestra). Tuttavia, in ogni caso, deve essere un elemento del documento posizionato in modo assoluto utilizzando l'attributo position CSS. Il secondo argomento è l'oggetto evento ricevuto con l'evento mousedown:

/ * drag() - trascina e rilascia elementi HTML posizionati in modo assoluto. Questa funzione deve essere chiamata dal gestore di eventi onmousedown. I successivi eventi mousemove faranno spostare l'elemento specificato. L'evento mouseup completerà lo spostamento. Questa implementazione funziona sia nei modelli di eventi standard che in IE. Utilizza la funzione getScrollOffsets(). Argomenti elementToDrag: l'elemento che ha ricevuto o contiene l'evento mousedown. Questo elemento deve essere assolutamente posizionato. I valori delle sue proprietà style.left e style.top cambieranno quando l'utente sposta il puntatore del mouse. event: l'oggetto Event ricevuto dal gestore dell'evento mousedown. * / function drag (elementToDrag, event) (// Converti le coordinate iniziali del mouse in coordinate del documento var scroll = getScrollOffsets (); // La funzione di supporto dichiarata sotto var startX = event.clientX + scroll.x; var startY = event.clientY + scroll.y; // Le coordinate iniziali (relative all'inizio del documento) dell'elemento che // verrà spostato.Poiché elementToDrag è posizionato in modo assoluto, // si presume che la sua proprietà offsetParent faccia riferimento al documento body var origX = elementToDrag.offsetLeft; var origY = elementToDrag.offsetTop; // Trova la distanza tra il punto dell'evento mousedown e l'angolo superiore sinistro dell'elemento. // Questa distanza verrà presa in considerazione quando si sposta il puntatore del mouse.var deltaX = startX - origX; var deltaY = startY - origY; // Registra i gestori degli eventi mousemove e mouseup // che seguono l'evento mousedown.if (document.addEventListener) (// Modello di evento standard // Registra intercettazione dei gestori nel documento document.addEventListener ("mousemove", moveHandler, true); document.addEventListener ("mouseup", upHandler, true); ) else if (document.attachEvent) (// Modello di eventi IE per IE5-8 // Nel modello di eventi IE, gli eventi vengono intercettati chiamando // il metodo setCapture () dell'elemento. elementToDrag.setCapture (); elementToDrag. attachEvent ("onmousemove", moveHandler); elementToDrag.attachEvent ("onmouseup", upHandler); // Interpreta la perdita dell'acquisizione dell'evento del mouse come un evento mouseup elementToDrag.attachEvent ("onlosecapture", upHandler);) // Questo evento è stato gestito e non deve essere passato ad altri gestori if (event .stopPropagation) event.stopPropagation (); // Modello standard else event.cancelBubble = true; // IE // Impedisce l'esecuzione delle azioni predefinite. if (event.preventDefault) event.preventDefault (); // Modello standard else event.returnValue = false; // IE / * Questo gestore cattura gli eventi di spostamento del mouse che si verificano mentre un elemento viene trascinato. È responsabile dello spostamento dell'elemento. * / function moveHandler (e) (if (! e) e = window.event; // IE Event Model // Sposta l'elemento nella posizione del mouse in base alle // posizioni della barra di scorrimento e agli offset relativi allo scroll iniziale di click.var = getScrollOffsets ( ); elementToDrag.style.left = (e.clientX + scroll.x - deltaX) + "px"; elementToDrag.style.top = (e.clientY + scroll.y - deltaY) + "px"; / / E abort propaga ulteriormente l'evento if (e.stopPropagation) e.stopPropagation (); // Modello standard else e.cancelBubble = true; // IE) / * Questo gestore intercetta l'evento mouseup finale che completa l'operazione di trascinamento. * / function upHandler (e) (if (! e) e = window.event; // IE Event Model // Rimuove i gestori di eventi di intercettazione. if (document.removeEventListener) (// DOM Event Model document.removeEventListener ("mouseup" , upHandler, true); document.removeEventListener ("mousemove", moveHandler, true);) else if (document.detachEvent) (// Modello evento IE 5+ elementToDrag.detachEvent ("onlosecapture", upHandler); elementToDrag.detachEvent ( "onmouseup", upHandler); elementToDrag.detachEvent ("onmousemove", moveHandler); elementToDrag.releaseCapture ();) // E interrompe l'ulteriore propagazione dell'evento. if (e.stopPropagation) e.stopPropagation (); // Standard model else e.cancelBubble = true; // IE)) // Restituisce le posizioni correnti della barra di scorrimento come proprietà x e y della funzione oggetto getScrollOffsets (w) (// Utilizza la finestra specificata o quella corrente, // se il la funzione viene chiamata senza un argomento w = w | | window; // Il seguente metodo funziona in tutti i browser tranne IE versione 8 e sotto if (w.pageXOffset! = null) return (x: w.pageXOffset, y: w.pageYOffset); // Per IE (e altri browser) in modalità standard var d = w.document; if (document.compatMode == "CSSICompat") return (x: d.documentElement.scrollLeft, y: d.documentElement.scrollTop); // Per i browser in modalità compatibilità return (x: d.body.scrollLeft, y: d.body.scrollTop); )

Il seguente frammento mostra come utilizzare la funzione drag() in un file HTML:

Trascinami

Questo è un test. Controllo, controllo, controllo.

Il più importante qui è l'attributo onmousedown sull'elemento annidato

... Nota che usa la proprietà this.parentNode. Ciò significa che l'intero elemento contenitore verrà spostato.

Eventi di immissione di testo

I browser supportano tre vecchi eventi di input da tastiera. Gli eventi keydown e keyup sono eventi di basso livello e vengono discussi nella sezione successiva. Tuttavia, l'evento pressione dei tastiè quello di alto livello che indica che è stato inserito un carattere stampabile.

La specifica del progetto DOM Level 3 Events definisce un evento più generalizzato l'immissione di testo generato in risposta all'input di testo, indipendentemente da come è stato inserito.

Con l'evento textinput proposto e l'evento textInput attualmente implementato, viene passato un semplice oggetto evento che ha una proprietà data che memorizza il testo immesso. (Un'altra proprietà proposta, inputMethod, dovrebbe definire l'origine dell'input, ma non è ancora stata implementata.) Per l'input da tastiera, la proprietà data di solito contiene un singolo carattere, ma quando viene digitata da altre origini, può contenere molti caratteri .

L'oggetto evento inviato con l'evento keypress ha un'organizzazione più complessa. L'evento keypress rappresenta l'input di un singolo carattere. Questo carattere è contenuto nell'oggetto evento come valore numerico del punto di codice Unicode ed è necessario utilizzare il metodo String.fromCharCode() per convertirlo in una stringa. Nella maggior parte dei browser, il punto di codice del carattere inserito è memorizzato nella proprietà chiave oggetto evento. Tuttavia, per ragioni storiche, Firefox utilizza invece la proprietà charCode.

Nella maggior parte dei browser, l'evento keypress viene generato solo quando viene immesso un carattere stampabile. Tuttavia, in Firefox, l'evento keypress viene generato anche per i caratteri non stampabili. Per distinguere i due casi (e ignorare i caratteri non stampabili), si può verificare se la proprietà charCode dell'oggetto evento esiste e contiene il valore 0.

Gli eventi textinput, textInput e keypress possono essere annullati per impedire l'immissione di caratteri. In altre parole, questi eventi possono essere utilizzati per filtrare l'input. Ad esempio, è possibile impedire l'immissione di caratteri alfabetici in un campo di input numerico.

L'esempio seguente mostra un modulo JavaScript che implementa questo tipo di filtro. Cerca gli oggetti con un attributo aggiuntivo (non standard) data-allowed-chars. Registra i gestori di eventi textinput, textInput e keypress per tutti gli elementi trovati e limita l'input ai caratteri delle espressioni regolari specificati nell'attributo data-allowed-chars:

/ * Filtro di input per gli articoli Questo modulo trova tutti gli elementi nel documento che ha l'attributo "data-allowed-chars". Registra i gestori di eventi keypress, textinput e textInput per questi elementi per limitare il set di caratteri che possono essere immessi per consentire l'immissione solo dei caratteri specificati nell'attributo. Se elemento ha anche un attributo "data-messageid", il valore di questo attributo viene interpretato come l'id di un altro elemento nel documento. Se l'utente immette un carattere non valido, l'elemento con l'id specificato viene reso visibile. Se l'utente immette un carattere valido, l'elemento del messaggio viene nascosto. Questo elemento messaggio ha lo scopo di visualizzare una spiegazione del motivo per cui l'input dell'utente è stato rifiutato. Deve essere stilizzato con CSS in modo che sia inizialmente invisibile. * / whenReady (function () (// Chiama questa funzione quando il documento viene caricato // Recupera tutti gli elementi) var inputelts = document.getElementsByTagName ("input"); // Bypassarli in un ciclo for (var i = 0; i< inputelts.length; i++) { var elt = inputelts[i]; // Пропустить элементы, не являющиеся текстовыми полями ввода // и не имеющие атрибута data-allowed-chars if (elt.type != "text" || !elt.getAttribute("data-allowed-chars")) continue; // Зарегистрировать наш обработчик события в этом элементе input // keypress старое событие и реализовано во всех браузерах. // textInput поддерживается в Safari и Chrome с 2010 года. // textinput версия проекта стандарта "DOM Level 3 Events". if (elt.addEventListener) { elt.addEventListener("keypress", filter, false); elt.addEventListener("textInput", filter, false); elt.addEventListener("textinput", filter, false); } // textinput не поддерживается версиями IE, в которых не реализован // метод addEventListener() else { elt.attachEvent("onkeypress", filter); } } // Обработчик событий keypress и textInput, фильтрующий ввод пользователя function filter(event) { // Получить объект события и целевой элемент target var e = event || window.event; // Модель стандартная или IE var target = e.target || e.srcElement; // Модель стандартная или IE var text = null; // Введенный текст // Получить введенный символ или текст if (e.type === "textinput" || e.type === "textInput") text = e.data; else { // Это было событие keypress // Введенный печатаемый символ в Firefox сохраняется в свойстве charCode var code = e.charCode || e.keyCode; // Если была нажата какая либо функциональная клавиша, не фильтровать ее if (code < 32 || // Управляющий символ ASCII e.charCode == 0 || // Функциональная клавиша (в Firefox) e.ctrlKey || e.altKey) // Удерживаемая клавиша-модификатор return; // Не фильтровать это событие // Преобразовать код символа в строку var text = String.fromCharCode(code); } // Отыскать необходимую нам информацию в этом элементе input var allowed = target.getAttribute("data-allowed-chars"); // Допустимые символы var messageid = target.getAttribute("data-messageid"); // Сообщение id if (messageid) // Если указано значение id, получить элемент var messageElement = document.getElementById(messageid); // Обойти в цикле символы во введенном тексте for(var i = 0; i < text.length; i++) { var c = text.charAt(i); allowed = new RegExp(allowed, "i"); // Создаем регулярное выражение if (c.search(allowed) == -1) { // Недопустимый символ? // Отобразить элемент с сообщением, если указан if (messageElement) messageElement.style.visibility="visible"; // Отменить действия по умолчанию, чтобы предотвратить вставку текста if (e.preventDefault) e.preventDefault(); if (e.returnValue) e.returnValue = false; return false; } } // Если все символы оказались допустимыми, скрыть элемент // с сообщением, если он был указан if (messageElement) messageElement.style.visibility = "hidden"; } });

Di seguito è riportato un esempio di markup HTML che utilizza questo modulo:

Si prega di compilare il modulo.

Informazioni sui contatti


La figura seguente illustra l'utilizzo di questo modulo. Qui, dopo aver inserito il nome, ho inserito una cifra che è stata automaticamente bloccata ed è apparso un messaggio di avviso:

Gli eventi keypress e textinput vengono attivati ​​appena prima dell'effettivo inserimento di nuovo testo nell'elemento del documento focalizzato, in modo che i loro gestori possano impedire l'inserimento del testo annullando l'evento.

Anche i browser implementano l'evento ingresso che viene attivato dopo che il testo è stato inserito nell'elemento. Questo evento non può essere annullato e il suo oggetto evento corrispondente non contiene informazioni sul testo inserito: notifica semplicemente che il contenuto del testo dell'elemento è cambiato. Se, ad esempio, vuoi assicurarti che vengano inseriti solo caratteri maiuscoli, puoi definire un gestore di eventi di input come mostrato di seguito:

L'evento di input è standardizzato nella specifica HTML5 ed è supportato da tutti i browser moderni tranne IE. Un effetto simile può essere ottenuto in IE rilevando un cambiamento nella proprietà value di un elemento di testo di input utilizzando un evento personalizzato cambio di proprietà.

Eventi della tastiera

sviluppi keydown e keyup attivato quando l'utente preme o rilascia un tasto sulla tastiera. Vengono generati per tasti modificatori, tasti funzione e tasti alfanumerici. Se l'utente tiene premuto un tasto abbastanza a lungo da attivare la modalità di ripetizione automatica, verranno generati molti eventi keydown prima che si verifichi l'evento keyup.

L'oggetto evento corrispondente a questi eventi ha la proprietà chiave con un valore numerico che identifica il tasto premuto. Per le chiavi che generano caratteri stampabili, in generale, la proprietà keyCode contiene il codepoint Unicode corrispondente al carattere di base rappresentato sulla chiave. I tasti con lettere generano sempre valori keyCode che corrispondono a caratteri maiuscoli, indipendentemente dallo stato del tasto Maiusc, poiché questi sono i caratteri raffigurati sui tasti.

Allo stesso modo, i tasti numerici generano sempre valori keyCode che corrispondono ai caratteri numerici mostrati sui tasti, anche se hai tenuto premuto il tasto Maiusc per inserire un segno di punteggiatura. Per le chiavi che non corrispondono ai caratteri stampabili, la proprietà keyCode avrà un altro significato. Questi valori delle proprietà keyCode non sono mai stati standardizzati. Tuttavia, non sono così diversi tra i browser da non poter garantire la portabilità.

Come gli oggetti evento del mouse, gli oggetti evento della tastiera hanno proprietà tasto alt, ctrlKey, metaKey e tasto delle maiuscole che diventano vere se il tasto modificatore corrispondente è stato tenuto premuto quando è stato generato l'evento.

Gli eventi keydown e keyup e la proprietà keyCode esistono da oltre un decennio, ma non sono mai stati standardizzati. Il DOM Level 3 Events Draft standardizza i tipi di evento keydown e keyup, ma non standardizza la proprietà keyCode. Invece, definisce una nuova proprietà, chiave, che dovrebbe contenere il nome della chiave come una stringa. Se la chiave corrisponde a un carattere stampabile, la proprietà chiave deve contenere quel carattere stampabile. Per i tasti funzione, la proprietà chiave deve contenere valori come F2, Home o Sinistra.

Al momento della stesura di questo documento, la proprietà della chiave DOM Level 3 Events non è stata ancora implementata in nessun browser. Tuttavia, i browser basati su Webkit, Safari e Chrome definiscono una proprietà su questi oggetti evento keyIdentifier... Per i tasti funzione, come la proprietà key, la proprietà keyIdentifier non contiene un numero, ma una stringa con il nome del tasto, ad esempio Maiusc o Invio. Per le chiavi che corrispondono a caratteri stampabili, questa proprietà contiene la rappresentazione di stringa meno intuitiva del punto di codice Unicode del carattere. Ad esempio, il tasto A corrisponde a U + 0041.

L'esempio seguente definisce una classe Keymap che associa identificatori di scorciatoie come PageUp, Alt_Z e ctrl + alt + shift + F5 alle funzioni JavaScript chiamate in risposta a tali sequenze di tasti. Le definizioni di keybind vengono passate al costruttore Keymap() sotto forma di un oggetto JavaScript i cui nomi di proprietà corrispondono a identificatori di scorciatoie e i cui valori di proprietà contengono riferimenti a funzioni del gestore. I binding vengono aggiunti e rimossi utilizzando i metodi bind() e unbind().

Installa un oggetto Keymap su un elemento HTML (di solito un oggetto Document) utilizzando il metodo install(). L'impostazione dell'oggetto Keymap registra un gestore per l'evento keydown su questo elemento. Ogni volta che viene premuto un tasto, il gestore ricerca una funzione che corrisponda a quella combinazione. Se la funzione esiste, viene chiamata.

Il gestore dell'evento keydown utilizza la proprietà della chiave DOM Level 3 Events, se esiste. In caso contrario, tenta di utilizzare la proprietà keyIdentifier di Webkit. E come fallback, il gestore utilizza la proprietà keyCode non standard:

// Funzione di costruzione funzione Keymap (bindings) (this.map = (); // Definisce l'identificatore di mappatura-> handler if (bindings) (// Copia la mappa dei binding iniziali in essa per (name in binding) this.bind ( nome, associazioni);)) // Associa l'identificatore di chiave specificato con la funzione specificata dal gestore Keymap.prototype.bind = function (key, func) (this.map = func;); // Rimuove l'associazione per l'id chiave specificato Keymap.prototype.unbind = function (key) (elimina this.map;); // Installa questo oggetto Keymap nell'elemento HTML specificato Keymap.prototype.install = function (elemento) (var keymap = this; // Definisci le funzioni del gestore eventi function handler (event) (return keymap.dispatch (event, element);) // Impostalo if (element.addEventListener) element.addEventListener ("keydown", handler, false);else if (element.attachEvent) element.attachEvent ("onkeydown", handler);); // Questo metodo delega la gestione degli eventi della tastiera in base alle associazioni Keymap.prototype.dispatch = function (event, element) (// Inizialmente, non ci sono nomi di tasti modificatori o nomi di tasti var modifiers = ""; var keyname = null; / / Costruisce stringhe di modificatori canonici da caratteri minuscoli // in ordine alfabetico. If (event.altKey) modificatori + = "alt_"; if (event.ctrlKey) modificatori + = "ctrl_"; if (event .metaKey) modificatori + = " meta_"; if (event.shiftKey) modificatori + = "shift_"; // Il nome della chiave è facile da ottenere se la proprietà della chiave è implementata, // definita dallo standard DOM Livello 3: if (event.key) keyname = event.key; // Puoi utilizzare la proprietà keyIdentifier // per ottenere i nomi dei tasti funzione in Safari e Chrome else if (event.keyIdentifier && event.keyIdentifier.substring (0,2)! == "U +") keyname = event.keyIdentifier; // Altrimenti, puoi usare la proprietà keyCode // e visualizzare code> name sotto else ke yname = Keymap.keyCodeToKeyName; // Se non è stato possibile determinare il nome della chiave, ignora semplicemente l'evento // e ritorna. if (! keyname) return; // L'identificatore della chiave canonica è costituito dai nomi dei modificatori // e dal nome della chiave in minuscolo var keyid = modificatori + keyname.toLowerCase (); // Controlla se c'è un'associazione per l'id chiave dato var handler = this.map; if (handler) (// Se il gestore è per questa chiave, chiamalo // Chiama la funzione del gestore var retval = handler.call (elemento, evento, keyid); // Se il gestore restituisce false, annulla le azioni predefinite / / e interrompe gli eventi di bubbling if (retval === false) (if (event.stopPropagation) event.stopPropagation (); // Modello DOM else event.cancelBubble = true; // Evento if (event.preventDefault) del modello IE. preventDefault (); // DOM else event.returnValue = false; // IE) // Restituisce il valore ricevuto dal gestore return retval;)); // Funzione di supporto per convertire l'identificatore della chiave nella forma canonica. // Dobbiamo convertire l'identificatore "meta" in "ctrl" in modo che // l'identificatore Meta-C sia "Comando-C" su Mac e "Ctrl-C" su tutti gli altri. Keymap.normalize = function (keyid) (keyid = keyid.toLowerCase (); // Parole var minuscole = keyid.split (/ \ s + | [\ - + _] /); // Estrai modificatori var keyname = parole . pop (); // keyname è l'ultima parola keyname = Keymap.aliases || keyname; // È questo un alias? word.sort (); // Ordina i modificatori word.push (keyname); // Riporta il valore normalizzato nome parole di ritorno .join ("_"); // Metti tutto insieme) Keymap.aliases = (// Mappa gli alias chiave familiari ai loro // nomi "ufficiali" usati nel DOM Livello 3 e mappa i codici chiave // ai nomi sottostanti Il nome e il valore devono essere composti solo da caratteri minuscoli "escape": "esc", "return": "enter", "delete": "del", "ctrl": "control", "space" : "barra spaziatrice", "ins": "inserisci"); // La vecchia proprietà keyCode dell'oggetto evento keydown non è standardizzata // Ma i seguenti valori possono essere utilizzati con successo nella maggior parte dei browser e dei sistemi operativi. Keymap.keyCodeToKeyName = (// Tasti con parole o frecce su di essi 8: "Backspace", 9: "Tab", 13: "Invio", 16: "Shift", 17: "Control", 18: "Alt", 19: "Pausa", 20: "Bloc Maiusc", 27: "Esc", 32: "Barra spaziatrice", 33: "PaginaSu", 34: "PaginaGiù", 35: "Fine", 36: "Home", 37: "Sinistra", 38: "Su", 39: "Destra", 40: "Giù", 45: "Inserisci", 46: "Canc", // Tasti numerici sulla tastiera principale (non su quella secondaria) 48: "0", 49:"1", 50:"2", 51:"3", 52:"4", 53:"5", 54:"6", 55:"7", 56:"8 ", 57: "9", // Tasti delle lettere. Nota che non c'è distinzione // tra caratteri maiuscoli e minuscoli 65: "A", 66: "B", 67: "C", 68: "D" , 69 : "E", 70: "F", 71: "G", 72: "H", 73: "I", 74: "J", 75: "K", 76: "L", 77 : "M", 78:"N", 79:"O", 80:"P", 81:"Q", 82:"R", 83:"S", 84:"T", 85:" U " , 86: "V", 87: "W", 88: "X", 89: "Y", 90: "Z", // Tasti numerici sulla tastiera aggiuntiva e tasti con segni di punteggiatura. // ( Non supportato in Opera.) 96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7" , 104: "8", 105: "9", 106: "Moltiplica", 107: "Aggiungi", 109: "S sottrae ", 110:" Decimale ", 111:" Dividi ", // Tasti funzione 112:" F1 ", 113:" F2 ", 114:" F3 ", 115: " F4 ", 116: " F5 ", 117 : "F6", 118: "F7", 119: "F8", 120: "F9", 121: "F10", 122: "F11", 123: "F12", 124: "F13", 125: " F14", 126:"F15", 127:"F16", 128:"F17", 129:"F18", 130:"F19", 131:"F20", 132:"F21", 133:"F22" , 134: "F23", 135: "F24", // Tasti di punteggiatura che non richiedono // tenere premuto il tasto Maiusc per entrare. // Il trattino non può essere utilizzato in modo portabile: FF restituisce // lo stesso codice del tasto Sottrai 59: ";", 61: "=", 186: ";", 187: "=", // Firefox e Opera restituiscono 59.61 188: ",", 190: ".", 191: "/", 192: "` ", 219:" [", 220:" \\ ", 221:"] ", 222: "" ");

Di seguito è mostrato un esempio di utilizzo dell'oggetto Keymap:

Window.onload = function() (var keymap = new Keymap; // Crea un nuovo oggetto Keymap keymap.bind ("ctrl + a", // Ctrl + Una funzione di scelta rapida (evento, keyid) (avviso ("Hai premuto: " + keyid))); // Un'altra associazione Ctrl + Enter keymap.bind ("ctrl + enter", function (event, keyid) (alert ("Hai premuto:" + keyid))); keymap.install (document. body); // Imposta l'oggetto Keymap per l'intero documento);