Come configurare smartphone e PC. Portale informativo
  • casa
  • Notizia
  • Imparare Java. Eventi del mouse Javascript

Imparare Java. Eventi del mouse Javascript

Questo articolo si concentrerà sugli eventi del mouse Javascript. Questi eventi sono molto importanti in Javascript e vengono utilizzati in ogni fase. Innanzitutto, ti parlerò di tutti gli eventi standard del mouse: mousedown , mouseup , click , dblclick , mousemove e infine mouseover e mouseout .

eventi mousedown, mouseup e click

Quando l'utente fa clic su un elemento, vengono attivati ​​almeno 3 eventi del mouse, in questo ordine:

  1. mousedown , l'utente ha premuto il pulsante del mouse sull'elemento
  2. mouseup , l'utente ha rilasciato il pulsante del mouse sull'elemento
  3. eventi click , mousedown e mouseup rilevati sull'elemento

In generale, gli eventi mousedown e mouseup sono più utili degli eventi click. A volte l'utente fa clic con il mouse, ma l'evento click non si attiva.

Supponiamo che l'utente abbia fatto clic sul pulsante sul collegamento, quindi abbia spostato il cursore da qualche parte di lato e rilasciato il pulsante. Il collegamento ha gestito solo l'evento mousedown. Puoi anche riprodurre la situazione opposta quando l'utente preme il pulsante del mouse, quindi sposta il cursore sul collegamento e rilascia il pulsante. Viene attivato solo l'evento mouseup. In altri casi il clic viene attivato.

Ad ogni modo, questo problema si verifica solo se lo desideri: devi registrare i gestori di eventi onmousedown/up, ma nella maggior parte dei casi l'evento click è sufficiente.

Tieni presente che se utilizzi gli avvisi, il browser può confondersi e perdere l'ordine degli eventi che vengono eseguiti e il numero di volte in cui sono stati chiamati.

evento dblclick (doppio clic)

L'evento dblclick viene utilizzato molto meno spesso di tutti gli altri eventi del mouse. Se lo usi, assicurati di non utilizzare i gestori di eventi onclick e ondblclick sullo stesso elemento HTML. È quasi impossibile determinare cosa ha fatto l'utente in questo caso.

Quando l'utente fa doppio clic su un elemento, l'evento click viene attivato prima e solo dopo dblclick . Anche l'utilizzo di messaggi di avviso qui è estremamente pericoloso.

evento mousemove

L'evento mousemove funziona bene, ma dovresti essere consapevole del fatto che la gestione di questo tipo di eventi può richiedere del tempo. L'evento mousemove si attiva quando l'utente sposta il cursore del mouse di un pixel. Sembrerebbe che non stia succedendo nulla di speciale, ma all'interno ci sono funzioni complesse, la cui esecuzione richiede molto tempo. Ciò potrebbe causare l'instabilità del sito. Pertanto, è meglio usare il gestore di eventi onmousemove solo dove è veramente necessario e assicurarsi di rimuoverlo in futuro.

Element.onmousemove = faiQualcosa;
// dopo
elemento.onmousemove = nullo;

Eventi al passaggio del mouse e al passaggio del mouse

Diamo un'occhiata a un piccolo esempio. Prova a passare il mouse sopra elementi con sfondi diversi. L'elemento 1 dovrebbe lampeggiare leggermente quando si passa sopra - questo attiva l'evento mouseover.

Elemento n. 1

Intervallo dell'elemento n. 2

Tuttavia, come puoi vedere, questo evento si attiva anche quando passi il mouse sopra l'elemento n. 2 e persino span.

Il motivo di questo comportamento è che l'evento impostato sul primo elemento viene applicato anche ai suoi nodi figlio. Tutto è molto chiaro, ma il problema sorge quando è necessario eseguire alcune azioni quando il cursore del mouse si sposta, ad esempio, dall'elemento span all'elemento n. 2.

"Da dove viene il topo?" o relatedTarget, fromElement e toElement proprietà

Microsoft ha creato due proprietà per memorizzare queste informazioni:

  • fromElement - si riferisce all'elemento da cui proviene il mouse.
  • toElement - all'elemento a cui è arrivato il mouse.

Codice incrociato del browser

Quindi, se vuoi sapere da dove proviene il mouse usando l'evento mouseover, usa il seguente script:

Funzione fare qualcosa(e) (
var relTarg = e.relatedTarget || e.daElemento;
}

Nel caso di utilizzo dell'evento mouseout (l'elemento su cui si sta spostando il cursore):

Funzione fare qualcosa(e) (
if (!e) var e = window.event;
var relTarg = e.relatedTarget || e.toElemento;
}

mouseenter e mouseleave

Microsoft offre un altro modo per risolvere il problema. Hanno creato 2 nuovi eventi mouseenter e mouseleave. Questi eventi hanno lo stesso comportamento di mouseover e mouseout. L'unica differenza è che gli eventi non "saltano" agli elementi figlio. Questo risolve molto bene il nostro problema presentato nell'esempio.

Bene, questo è tutto ciò di cui volevo parlare riguardo agli eventi del mouse Javascript. Risponderò volentieri ai tuoi commenti.

Buona giornata, iscritti curiosi e ospiti del blog. Oggi ti guideremo attraverso una sezione utile in un linguaggio di scripting basato su prototipi, ovvero l'evento JavaScript mouseover.

Voglio che tu abbia una buona comprensione di eventi come clic, mouse su, mousedown, mouseover e altri, capisca la differenza tra loro e impari come usarli per risolvere i tuoi problemi. Naturalmente, dopo ogni materiale teorico chiave, puoi trovare un'implementazione software di esempi. Bene, iniziamo!

Tutte le informazioni sugli eventi del mouse

Per il mouse, ci sono diversi eventi che coprono completamente le varie azioni del cursore sulla pagina. Tra questi ci sono quelli che vengono attivati ​​facendo clic su un oggetto, passandoci sopra o spostando il puntatore su una finestra aperta. Tutti possono essere divisi in due gruppi: eventi semplici e complessi (compositi).

Iniziamo in modo semplice

Cominciamo con eventi semplici. Ce ne sono solo cinque. Per comodità, ho inserito una descrizione di ogni strumento nella tabella allegata di seguito.

Nome Descrizione
mouse verso il basso L'evento denominato viene chiamato quando uno dei pulsanti del mouse viene premuto ma non ancora rilasciato.
alza il mouse E questo funziona già quando viene rilasciato il pulsante precedentemente tenuto.
passa il mouse Chiamato quando il cursore viene posizionato su un oggetto in elaborazione.
uscita del mouse Gestisce l'azione di uscita del cursore dall'area dell'elemento.
mossa del mouse Qualsiasi movimento del puntatore su una determinata area attiva l'evento corrente.

Bene, ora, per consolidare il materiale, analizzeremo un esempio. Ho creato un piccolo programma che cambia le emozioni di una faccina quando si passa il mouse e si sposta il cursore lontano.

Passa il mouse sull'immagine e cambierà.

Ora mettilo da parte e osserva i cambiamenti

È tempo di raggruppamento

Passiamo ora alle viste complesse. Ognuno di questi eventi ne include diversi semplici. In questo caso, tutti i componenti di un evento complesso non si attivano contemporaneamente, ma si allineano in coda. Pertanto, a volte potresti osservare una situazione del genere per cui quando fai clic rapidamente, ad esempio, sulle voci di menu di un sito Web, i clic a volte non funzionano.

Perchè così? La risposta è abbastanza semplice.

L'elaborazione degli eventi avviene a una velocità massima consentita. E allo stesso tempo, non dimenticare che gli eventi vengono elaborati a turno. Ciò significa che se si fa clic su diversi elementi troppo rapidamente, la catena di elaborazione potrebbe non essere completata completamente.

Quindi, di seguito sono riportati gli eventi composti.

Come hai già capito, gli eventi complessi semplificano in qualche modo la vita degli sviluppatori, incluso un insieme di eventi semplici necessari contemporaneamente. Di conseguenza, oggi nessuno può immaginare la consueta lavorazione di bottoni o altri elementi senza la stessa clic.

Per una conoscenza pratica del funzionamento degli eventi di cui sopra, ho modificato l'applicazione precedente. Analizza il risultato del mio lavoro.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Esempio di passaggio del mouse su un elemento della pagina

Esempio di passaggio del mouse su un elemento della pagina

Come puoi vedere, tutto è molto semplice. Questi elementi sono facili da richiamare nel codice e si legano ad azioni specifiche.

eventi jQuery contribuire a rendere interattive le pagine Web rispondendo a semplici azioni dell'utente. Gli eventi rappresentano il momento preciso in cui accade qualcosa, come un clic del mouse.

Viene chiamato il momento in cui si verifica un evento innescando un evento. Gli eventi possono essere attivati ​​durante l'esecuzione di varie operazioni su una pagina Web. Inoltre, il browser stesso può diventare una fonte di eventi.

Controllo di una pagina Web con jQuery Events

1. Eventi del mouse

.clic()
Questo evento viene attivato quando si preme e si rilascia il pulsante del mouse. Si applica a collegamenti, immagini, pulsanti, paragrafi, blocchi, ecc.

.dblclick()
L'evento viene generato quando si fa doppio clic e si rilascia il pulsante del mouse, ad esempio quando si apre una cartella sul desktop.

.mousedown()
L'evento si verifica quando viene premuto un pulsante del mouse, ad esempio durante il trascinamento di elementi.

.mousemov()
L'evento viene attivato quando si sposta il mouse sulla pagina.

.mouseout()
L'evento viene generato quando si sposta il mouse lontano dall'elemento.

.mouseover()
L'evento viene attivato quando si passa il mouse su un elemento (simile all'utilizzo della pseudo-classe :hover).

.mouse ()
L'evento viene attivato quando si rilascia il pulsante del mouse.

2. Eventi documento/finestra

.carico()
L'evento viene attivato quando il browser ha caricato tutti i file della pagina Web: file html, css esterni e file javascript, file multimediali. Questo può essere scomodo se la pagina Web contiene un numero elevato di file. Per risolvere questo problema, puoi usare la funzione ready(), che esegue gli script subito dopo aver caricato il codice html.

.ridimensiona()
L'evento viene generato quando si ridimensiona la finestra del browser.

.scorrere()
L'evento viene attivato quando si utilizzano le barre di scorrimento, si scorre la pagina Web con la rotellina del mouse o si utilizzano i tasti della tastiera (pg su, pg dn, home, end) per farlo.

.scaricare()
L'evento viene attivato quando stai per uscire da una pagina facendo clic su un collegamento per passare a un'altra pagina, chiudere una scheda di una pagina o chiudere una finestra del browser.

3. Crea eventi

.sfocatura()
L'evento viene attivato quando il campo del modulo non è più a fuoco, ad es. hai inserito i dati in un campo del modulo e ti sei spostato in un altro.

.modificare()
L'evento viene attivato quando lo stato di un campo modulo cambia, ad esempio selezionando un elemento da un menu a discesa.

.messa a fuoco()
L'evento viene attivato quando si accede a un campo modulo facendo clic con il pulsante del mouse o con il tasto Tab al suo interno.

.Ripristina()
L'evento consente di riportare il modulo allo stato originale, annullando le modifiche apportate.

.Selezionare()
L'evento viene generato quando si seleziona del testo all'interno di un campo di testo del modulo.

.Sottoscrivi()
L'evento viene attivato quando invii un modulo compilato facendo clic sul pulsante Invia o premendo il tasto Invio mentre il cursore si trova nel campo di testo.

4. Eventi della tastiera

.keydown()
L'evento viene attivato quando viene premuto un tasto, prima dell'evento keypress.

.pressione di un tasto()
L'evento viene attivato quando si preme un tasto finché non si rilascia il tasto.

.keyup()
L'evento viene attivato quando si rilascia un tasto.

5. Eventi jQuery

.hover()
Questa funzione funziona come un evento, consentendo di risolvere contemporaneamente due attività associate all'evento passaggio del mouse e all'evento passaggio del mouse sull'oggetto selezionato. Struttura della funzione principale:
$("#selettore").hover(funzione1, funzione2);

.toggle()
L'evento funziona in modo simile all'evento hover(), con la differenza che l'evento viene attivato con un clic del mouse. Ad esempio, puoi aprire un menu a discesa con un clic e nasconderlo con un secondo.

6. Oggetto evento

Quando un evento viene attivato, il browser salva le informazioni su di esso oggetto evento. L'oggetto evento contiene i dati raccolti nel momento in cui si è verificato l'evento. L'evento viene elaborato utilizzando una funzione, mentre l'oggetto viene passato alla funzione come argomento: la variabile evt (puoi anche usare event o semplicemente e come nome di una variabile). Per accedere a un argomento, è necessario aggiungere un nome di parametro alla funzione. All'interno di una determinata funzione, puoi accedere a varie proprietà usando la sintassi del punto. Quando la funzione viene chiamata, l'oggetto evento viene archiviato nella variabile evt.
L'oggetto evento ha diverse proprietà, le più comuni delle quali sono descritte nella tabella seguente.

Tabella 1. Proprietà dell'oggetto evento
Proprietà Descrizione
pagina X Distanza (px) dal puntatore del mouse al bordo sinistro della finestra del browser
pagina Y Distanza (px) dal puntatore del mouse al bordo superiore della finestra del browser
schermoX Distanza (px) dal puntatore del mouse al bordo sinistro del monitor
schermo Y Distanza (px) dal puntatore del mouse al bordo superiore del monitor
tasto delle maiuscole TRUE se il tasto MAIUSC è stato premuto quando si è verificato l'evento
quale Utilizzato per determinare il codice numerico del tasto premuto (insieme a shiftKey)
bersaglio Indica che il pulsante del mouse è stato cliccato sull'oggetto evento (ad es. per l'evento click())
dati Un oggetto utilizzato con la funzione bind() per passare i dati alla funzione che gestisce l'evento

Continuiamo a imparare jQuery e ora iniziamo a studiare una sezione come la gestione degli eventi in jQuery.

Eventi del documento
Quando un utente interagisce con una pagina web, si verificano degli eventi. Gli eventi sono una sorta di notifica al sistema che l'utente ha eseguito un'azione o si è verificata una condizione all'interno del sistema stesso. Gli eventi vengono attivati ​​in seguito al clic su un elemento, allo spostamento del mouse, alla pressione di un tasto sulla tastiera, al ridimensionamento di una finestra, al completamento del caricamento di una pagina Web e così via. Sapendo quali eventi può generare un particolare elemento di una pagina web, puoi scrivere una funzione per gestire questo evento. Ad esempio, quando si inviano i dati del modulo, viene attivato l'evento onsubmit. Quando si verifica questo evento, è possibile convalidare i dati inseriti dall'utente e, se non corrispondono a quanto previsto, interrompere l'invio dei dati.

All'inizio del libro, abbiamo già considerato la possibilità di eseguire script subito dopo la formazione della struttura del documento, senza attendere il caricamento di altri elementi. Come già sai, puoi gestire questo evento usando il metodo ready().


alert("Il documento è disponibile per l'esecuzione dello script");
});

Se è necessario eseguire alcune azioni solo dopo che il documento HTML stesso è stato completamente caricato, così come tutti gli altri elementi (ad esempio le immagini), è possibile utilizzare il metodo load(). La sintassi del metodo è la seguente.

carico (funzione di richiamata)

funzione<Название функции>([oggetto evento]) (
// ...
}

Visualizzeremo un messaggio di conferma e il tipo di evento dopo che la pagina web sarà stata completamente caricata.

$(finestra).load(funzione(i) (
alert("Il documento è completamente caricato");
alert("Tipo di evento " + e.type);
});

Come risultato dell'esecuzione, riceveremo due messaggi.

Il documento è completamente caricato
tipo di evento di caricamento

Il metodo unload() ha lo scopo di eseguire qualsiasi azione immediatamente prima di scaricare il documento. Il metodo ha la seguente sintassi.
scarica (funzione di richiamata)

Il parametro della funzione Callback specifica un riferimento a una funzione del formato seguente.

funzione<Название функции>([<Объект event>]) {
// ...
}
Visualizza un messaggio prima di scaricare il documento.
$(finestra).unload(funzione()
( avviso("Entradi più!");
});

In questa sezione, esamineremo altri due metodi utili.

resize (funzione Callback) - Eseguita quando la finestra viene ridimensionata.

scroll (funzione Callback) - Eseguita quando si scorre il contenuto di un elemento di pagina, documento, finestra o cornice.

Il parametro della funzione Callback specifica un riferimento a una funzione del formato seguente.
funzione Nome funzione([Oggetto evento]) (
// ...
}

È possibile elaborare lo scorrimento del contenuto della finestra e visualizzare un messaggio come questo.
$(finestra).scroll(funzione() (
alert("Scorri il contenuto della finestra");
});

Come esempio dell'uso del metodo resize(), otteniamo la larghezza e l'altezza della finestra dopo che è stata ridimensionata (Listato 6.1).

Listato 6.1. Mostra la larghezza e l'altezza della finestra durante il ridimensionamento



Visualizza larghezza e altezza della finestra in caso di modifica</i><br><i>dimensione</i><i>





Quando la finestra viene ridimensionata, l'elemento divl visualizzerà la larghezza e l'altezza della finestra.

Il metodo di errore (Funzione Callback) viene chiamato quando si verifica un errore nella pagina o nel codice JavaScript. Il parametro della funzione Callback specifica un riferimento a una funzione del formato seguente.

function Nome funzione([Messaggio[, URL[, Numero riga]]])(
// ...
}

Se l'errore si è verificato nell'oggetto finestra, nella funzione di callback saranno disponibili tre parametri:

Messaggio - testo che descrive l'errore;
URL - URL completo del documento con l'errore;
Numero di riga - numero di riga con un errore.

Per nascondere gli errori JavaScript agli utenti, restituisci true all'interno della funzione di callback.

$(finestra).error(funzione()(
restituisce vero;
});

Usando il metodo error(), puoi gestire un errore di caricamento dell'immagine.

$("img").error(funzione() (
$(questo).attr("src", "noimage.gif");
});

Nota
Affinché questo esempio funzioni correttamente, è necessario posizionare lo script sul server. In caso contrario, l'evento non verrà elaborato.

Eventi del mouse in jQuery

I seguenti metodi sono forniti per gestire gli eventi del mouse in jQuery.

Click([Funzione di richiamata]) - Eseguito quando si fa clic su un elemento o una pagina web. Se il parametro non è specificato, simulerà un clic sull'elemento. L'evento onclick è preceduto da due eventi: onmousedown e onmouseup. Visualizza un messaggio dopo aver fatto clic su qualsiasi pulsante.
$("ibutton").click(funzione() (
});

Toggle(): consente di alternare tra più funzioni quando si fa clic su un elemento o una pagina Web. Le funzioni vengono richiamate a turno. Il primo clic richiama la prima funzione, il secondo clic richiama la seconda e il terzo clic richiama la terza. Se la terza funzione non è definita, viene richiamata di nuovo la prima funzione e così via. Il metodo toggle() ha il seguente formato.
attiva/disattiva(<Функция обратного вызова 1>,
<Функция обратного вызова 2>[,
<Функция обратного вызова N>])

Facciamo cambiare il colore del testo del paragrafo dopo ogni clic del mouse.
$("p").commuta
(funzione() (
$(questo).css("colore", "rosso");
funzione() (
$(questo).css("colore", "blu");
funzione() (
$(questo).css("colore", "verde");
}
).click();

Prova a fare clic più volte sul paragrafo. Il colore del testo cambierà in sequenza da rosso a blu, da blu a verde, da verde a rosso di nuovo. Prestare attenzione all'ultima riga dell'esempio. Dopo che il gestore dell'evento è stato assegnato, l'evento onclick viene attivato con il metodo click() senza parametri. Per questo motivo, il colore del paragrafo sarà rosso fin dall'inizio.

Dblclick([Funzione Callback]) - Eseguito quando si fa doppio clic su un elemento o una pagina web. Se il parametro non è specificato, simulerà un doppio clic sull'elemento. L'evento ondblclick è preceduto da tre eventi: onmousedown, onmouseup e onclick. Visualizza un messaggio quando fai doppio clic su qualsiasi paragrafo.
$("p").dblclick(funzione() (
alert("Hai fatto doppio clic");
});

mousedown (funzione Callback) - eseguita quando si preme il pulsante del mouse su un elemento o una pagina. L'evento onmousedown si verifica prima degli eventi onmouseup e onclick.

mouseup (funzione Callback) - eseguita quando viene rilasciato il pulsante del mouse precedentemente premuto. L'evento onmouseup si verifica tra gli eventi onmousedown e onclick. Visualizza i messaggi quando fai clic e rilasci il pulsante del mouse su un paragrafo.

$("p").mousedown(function() (
$("#divl").append("Evento Onmousedown" + "
");
))mouseup(funzione() (
$("#divl").append("Evento Onmouseup" + "
");
});
<р>cliccami

Mousemove (Funzione Callback) - Viene eseguito ogni volta che si sposta il mouse. Visualizza un messaggio quando sposti il ​​cursore su un paragrafo.

$("p") .mousemove(function() (
$("#divl").append("Evento Onmousemove" + "
");
});

mouseover (funzione Callback) - eseguita quando il cursore del mouse si trova sull'elemento.

mouseout (funzione Callback) - eseguita quando il cursore del mouse lascia l'elemento. Passando il mouse sopra il collegamento, renderemo il colore del collegamento rosso e visualizzeremo un messaggio, e quando il cursore lascia il collegamento, cambieremo il suo colore in nero e visualizzeremo un messaggio.

$("a").mouseover(funzione() (
$(questo).css("colore", "rosso");
$("#divl").append("Eventoal passaggio del mouse" + "
");

))mouseout(funzione() (
$(questo).css("colore", "nero");
$("#divl").append("Eventosenza controllo" + "
");

}>;

hover(): consente di gestire il passaggio del mouse e il passaggio del mouse su un elemento con un unico metodo. Ha il seguente formato.
hover(Richiamata evento onmouseover, richiamata evento onmouseout)

Riscriviamo il nostro esempio precedente e utilizziamo il metodo hover().

$("a").hover(funzione() (
$(questo).css("colore", "rosso");
$("#divl").append("Evento sopra il mouse" + "
"); },
funzione() (
$(questo).css("colore", "nero");
$("#divl").append("Evento Onmouseout" + "
");
});

L'uso del metodo hover() ha un altro vantaggio. Se è presente un altro blocco all'interno del blocco, verranno chiamate funzioni separate quando si entra nel blocco interno e quando si esce da esso. Quando si utilizza il metodo hover(), questi movimenti verranno ignorati (Listato 6.2).

Listato 6.2. Caratteristiche dell'utilizzo del metodo al passaggio del mouse()



Caratteristiche dell'utilizzo del metodo hover()






Separatogestori:



Linea 1

Linea 2



Funzionepassa il mouse():



Linea 1

Linea 2




Per il primo blocco nidificato, abbiamo definito gestori di eventi separati. Se spostiamo il cursore del mouse sull'intero blocco al centro, otteniamo la seguente sequenza di eventi.
evento sul passaggio del mouse
evento senza fine
evento sul passaggio del mouse
evento senza fine
evento sul passaggio del mouse
evento senza fine

Per il secondo blocco nidificato, i gestori di eventi vengono assegnati utilizzando il metodo hover(). Con la stessa azione, riceveremo solo due eventi.
evento sul passaggio del mouse
evento senza fine

In tutti i metodi in questa sezione, non abbiamo ancora capito il parametro che può essere passato a loro.


// ...
}

L'elemento che ha generato l'evento è accessibile all'interno della funzione tramite il puntatore this. Si noti che il puntatore this fa riferimento a un elemento nel Document Object Model, non a un elemento nella raccolta jQuery. Se nel parametro dell'oggetto evento è specificata una variabile, tramite essa è possibile accedere alle proprietà dell'oggetto evento. Scriviamo un gestore di clic del mouse per due elementi contemporaneamente. Quando si fa clic, visualizzare il nome del tag nell'elemento con l'id divl.

$("p, div").click(function(es) {
$("#divl")
.append("Elemento" + e.srcElement.tagName + "
");

});

Eventi della tastiera in jQuery

I seguenti metodi sono forniti per gestire gli eventi della tastiera in jQuery.

keydown (funzione di richiamata) - eseguita quando viene premuto un tasto della tastiera.

keyprcss (Funzione Callback) - Eseguita quando viene premuto un tasto della tastiera. Simile al metodo keydown(), ma restituisce il valore del codice del carattere in Unicode. L'evento si attiva continuamente finché l'utente non rilascia la chiave.

keyup (funzione Callback) - eseguita quando viene rilasciato il tasto della tastiera precedentemente premuto.

Il parametro della funzione di callback è un riferimento a una funzione del formato seguente.

funzione Nome funzione([Oggetto evento]) (
// ...
}

Se nel parametro dell'oggetto evento è specificata una variabile, tramite essa è possibile accedere alle proprietà dell'oggetto evento. Ad esempio, per ottenere il codice del tasto premuto, è possibile utilizzare la proprietà Codice del tasto. Ad esempio, otterremo il codice del tasto premuto e dimostreremo la sequenza degli eventi (Listato 6.3).

Listato 6.3. Eventi da tastiera



Eventi</i><i>tastiere</i><i>








Evidenzia il campo di testo e premi un tasto qualsiasi sulla tastiera. Ad esempio, premiamo il tasto A con il layout della tastiera russa. Di conseguenza, otteniamo il seguente messaggio.
keydown 70
keyprcss 1072
tasto 7 0

Crea eventi in jQuery

I metodi seguenti sono progettati per gestire gli eventi del modulo.

focus([Callback]) - Eseguito quando l'elemento del modulo riceve lo stato attivo. Se il parametro non è specificato, l'elemento riceverà lo stato attivo per l'input.

blur([Callback]) - attivato quando l'elemento del modulo perde lo stato attivo. Se il parametro non è specificato, l'elemento perderà lo stato attivo per l'input.

modifica (funzione Callback) - eseguita quando i dati nel campo di testo cambiano e lo stato attivo si sposta su un altro elemento del modulo o quando i dati del modulo vengono inviati.

submit([Funzione di richiamata]) - Eseguito quando vengono inviati i dati del modulo. Se il parametro non è specificato, il modulo verrà inviato.

select([ funzione di callback ]) - eseguito quando viene selezionato il contenuto di un elemento. Se il parametro non è specificato, il contenuto dell'elemento sarà completamente selezionato.

Il parametro della funzione di callback è un riferimento a una funzione del formato seguente.

funzione Nome funzione([Oggetto evento]) (
// ...
}

L'elemento che ha generato l'evento è accessibile all'interno della funzione tramite il puntatore this. Si noti che il puntatore this fa riferimento a un elemento nel Document Object Model, non a un elemento nella raccolta jQuery. Se nel parametro dell'oggetto evento è specificata una variabile, tramite essa è possibile accedere alle proprietà dell'oggetto evento.

Dimostriamo la gestione di vari eventi di form (Listato 6.4).



Eventi</i><i>le forme</i><i>










!}

id="btn2">

!}

Quindi, abbiamo creato un modulo con tre elementi. Quando si seleziona un elemento dall'elenco, verrà visualizzato un messaggio con il valore dell'elemento selezionato. Se selezioni un campo di testo, il colore di sfondo cambierà e se rimuovi lo stato attivo dal campo, il colore di sfondo tornerà bianco. Facendo clic sul pulsante Invia viene visualizzata una finestra di dialogo che consente di interrompere l'invio dei dati del modulo. Sotto il modulo ci sono quattro pulsanti. Il primo pulsante consente di selezionare il contenuto del campo di testo. Dopo la selezione, verrà visualizzato un messaggio sulla selezione del frammento, poiché abbiamo definito il gestore appropriato. Lo stesso messaggio può essere ottenuto selezionando un frammento nel campo con il mouse. Il secondo pulsante consente di impostare lo stato attivo dell'input sul campo di testo e il terzo di rimuoverlo. E infine, il quarto pulsante serve per inviare i dati del modulo. Facendo clic su questo pulsante verrà visualizzata una finestra di dialogo per confermare l'invio dei dati.

Gestori di eventi generici in jQuery

Nelle sezioni precedenti, abbiamo esaminato specifici gestori di eventi. La libreria jQuery ti consente anche di assegnare gestori a diversi eventi (inclusi i tuoi eventi) con un unico metodo. Vengono forniti i metodi seguenti per l'assegnazione, la chiamata e la rimozione di gestori.

Bind(Event type[, Data] , Callback function) - consente di assegnare un gestore a tutti gli elementi della raccolta. I seguenti valori possono essere specificati nel parametro Tipo di evento:
eventi del documento: caricamento, scaricamento, ridimensionamento, scorrimento, errore;
eventi del mouse: click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave;
eventi della tastiera: keydown, keyprcss, keyup;
eventi del modulo: messa a fuoco, sfocatura, modifica, selezione, invio.

Abbiamo già considerato quasi tutti questi eventi nelle sezioni precedenti. Ad esempio, puoi assegnare un gestore di eventi clic per tutti i pulsanti come questo.

$(":button") .bind("click", function()
( avviso ("Tupremutosulpulsante");
});

Ci sono due eventi del mouse non presi in considerazione. L'evento mouseenter viene attivato quando il cursore del mouse si trova sull'elemento e l'evento mouse leave viene attivato quando il cursore del mouse lascia l'elemento. L'uso di questi eventi è diverso dalla gestione degli eventi mouseover e mouseout. Se è presente un altro blocco all'interno del blocco, l'evento mouseover verrà attivato quando viene inserito il blocco interno e l'evento mouseout verrà attivato quando esce. Quando si utilizzano gli eventi mouseenter e mouseleave, questi movimenti verranno ignorati (Listato 6.5).

Listato 6.5. eventi mouseenter e mouseleave



Eventi</i><i>mouseenter e</i><i>lascia il topo

content="testo/html; charset=utf-8">





Eventipassa il mouse euscita del mouse:



Linea 1

Linea 2



Eventimouseenter emouseleave:



Linea 1

Linea 2




Per il primo blocco nidificato, abbiamo definito gestori di eventi mouseover e mouseout. Se spostiamo il cursore del mouse sull'intero blocco al centro, otteniamo la seguente sequenza di eventi.
evento al passaggio del mouse
evento di uscita del mouse
evento al passaggio del mouse
evento di uscita del mouse
evento al passaggio del mouse
evento di uscita del mouse

Il secondo blocco nidificato ha i gestori di eventi mouseenter e mouseleave assegnati. Con la stessa azione, otteniamo solo due eventi.
evento mouseenter
evento di uscita del mouse

Nel parametro Tipo di evento è possibile specificare una combinazione di eventi separati da uno spazio. Cambiamo la classe del collegamento quando il cursore del mouse è posizionato e quando il cursore si allontana, cancelleremo la classe.

$("a").bind("mouseenter mouseleave", function() (
$(questo).toggleClass("clsl");
});

Puoi anche associare i tuoi eventi usando il metodo bind(). La chiamata ai propri eventi viene eseguita utilizzando i metodi trigger() e triggerHandler(). Creiamo il nostro evento e poi lo chiamiamo.

$("#divl").bind("myEvent", function() (
alert("Gestione evento personalizzato");
});
$("#divl"). trigger("myEvent11) ; // Attiva l'evento

Il parametro della funzione di callback è un riferimento a una funzione del formato seguente.

funzione Nome funzione([Evento[, Argomenti] ]) (
// ...
}

$ ("#divl") .bind ("myEvent11, function(e, msg) (

});
$("#divl").trigger("myEvent", ["Il nostro messaggio"]);

Utilizzando il parametro Data opzionale, puoi passare i valori alla funzione del gestore. Per fare ciò, i parametri e i valori passati devono essere specificati come segue.
{
Parametro1: "Valore1",
Parametro2: "Valore2",
Parametri: "Valore"
}

Puoi ottenere il valore del parametro passato all'interno della funzione in questo modo.
3value = Oggetto event.data.Parameter

Considera un esempio.

funzione f_clic(e) (
var str = "msgl = 11 + e.data.msgl + "\n";
str += "msg2 = 11 + e.data.msg2; alert(str);
restituire falso;
}
$("a").bind(
"clic", // Evento
(msgl: "Messaggio 1", msg2: "Messaggio 2"), // I nostri dati
f_click // Collegamento alla funzione
) ;

msgl = messaggio 1
msg2 = messaggio 2

Puoi assegnare più gestori a un singolo evento. In questo caso, verranno chiamati nell'ordine in cui sono stati definiti.


avviso("Primogestore");
});
$("#btnl").bind("clic", function() (
avviso("Secondogestore");
});

Cliccando su un elemento con ID btnl verranno visualizzati due messaggi in sequenza.
Primo gestore
Secondo gestore

Uno (Tipo di evento[, Dati], Funzione di richiamata) - consente di assegnare un gestore a tutti gli elementi della raccolta. Il metodo è identico a bind(), ma l'evento si attiva solo una volta, dopodiché il gestore verrà automaticamente rimosso.
$("ibutton").one("click", function()
( avviso("Hai cliccato il pulsante");
});

Dopo il primo clic sul pulsante verrà visualizzato il messaggio specificato e dopo il secondo clic il gestore non verrà più chiamato.

Trigger (Tipo di evento[, Matrice di dati]): chiama il gestore dell'evento specificato.
$(documento).bind("clic", function() (
// Avviso gestore ("Event onclick");
});
$(documento).trigger("clic"); // Chiama il gestore

Se viene specificata una matrice di dati, verrà passata alla funzione di callback nel gestore. Ogni parametro corrisponderà a un elemento dell'array.

$("#divl").bind("myEvent", function(e, msgl, msg2) (
$("#div2") . append("Eventoil mio evento. " + msgl + " 11 +
msg2).append("br");
});
$("p").click(funzione() (
$("#divl").trigger("myEvent", [“Message1”, “Message2” ]);
});

<р>premere qui


Come risultato dell'esecuzione di questo codice, riceviamo un messaggio.
evento mioEvento. Messaggio1 Messaggio2

TgiggerHandleg (Event type[, Data array]): chiama il gestore dell'evento specificato. A differenza del metodo trigger(), l'evento viene generato solo sul primo elemento della raccolta. Inoltre, quando si utilizza il metodo triggerHandleg(), non è presente alcuna azione predefinita.
$("form").bind("submit", function(e, msg) (
se (msg) (
alert("Il modulo non verrà inviato. " + msg);
}
altro(
alert("Il modulo verrà inviato");
});
$(":button").bind("click", function() (
$("modulo") . triggerHandler("submit", ["I nostri dati"]) ;
});



In questo esempio, facendo clic sul pulsante Richiama gestore viene attivato il gestore eventi onclick. All'interno del gestore, attiviamo l'evento onsubmit e inviamo i nostri dati. Sulla base di questi dati, possiamo determinare se l'evento è stato attivato quando è stato fatto clic sul pulsante Invia o se è stato attivato artificialmente da noi. Se la variabile msg è definita, l'evento è stato generato utilizzando il metodo triggerHandler(). In questo caso, i dati del modulo non verranno inviati dopo la visualizzazione del messaggio. Se si fa clic sul pulsante Invia, la variabile msg non sarà definita ei dati del modulo verranno inviati dopo la visualizzazione del messaggio.

Unbind([Tipo evento[, Nome funzione]]) - rimuove i gestori di eventi per tutti gli elementi della raccolta.
$("#btnl").bind("clic", function() (
alert("Hai cliccato il pulsante");
});
$("#btnl").unbind("click");
});


Se si specifica il nome della funzione nel secondo parametro, verrà eliminato solo il gestore con quel nome.

funzione f__clickl() (
avviso ("Funzione f__clickl () ");
}
funzione f_click2() (
avviso ("Funzione f__click2 () ");
}
$("#btnl").bind("click", f_clickl); $("#btnl")
.bind("clic", f_clic2);
$("#btn2").bind("clic", function() (
$("#btnl").unbind("click", f_click2);
});



Funzione
f_click1()
Funzione
f_clJck2()

Quando si fa clic sul pulsante Elimina gestore, il gestore eventi denominato f_click2 verrà rimosso. Ora dopo aver cliccato sul primo pulsante, riceveremo un solo messaggio.
f_clJck1() funzione

Se i parametri non sono specificati, tutti i gestori verranno eliminati.
eventi. $("#btnl").unbind();

metodi live() e die() in jQuery

L'assegnazione di gestori di eventi con il metodo bind() presenta uno svantaggio significativo. Se abbiamo assegnato un gestore e quindi abbiamo aggiunto nuovi elementi, a quegli elementi non verrà assegnato alcun gestore di eventi.

$(":button").bind("click", function() (
varhtml=` `;
$(questo).dopo("
"+html);

});

In questo esempio, abbiamo assegnato un gestore di eventi click a tutti i pulsanti. Quando si fa clic su un pulsante, viene aggiunto un nuovo pulsante. Se provi a fare clic su di esso, non verranno apportate modifiche.

Il metodo live() serve per assegnare dinamicamente gestori di eventi. Riscriviamo il nostro esempio precedente e usiamo il metodo live() invece di bind().

$(":button").live("click", function() (
varhtml=` `;
$(questo).dopo("
"+html);

});

In questo caso, se fai clic sul nuovo pulsante, apparirà un altro pulsante. Facendo clic su questo pulsante verrà creato un altro pulsante e così via.

Nota
Il metodo live() è disponibile da jQuery 1.3. Nelle versioni precedenti è possibile utilizzare il modulo Live Query.

Il metodo live() ha il seguente formato, live(Tipo di evento, Funzione di callback)
I seguenti valori possono essere specificati nel parametro Tipo di evento:
eventi del mouse: click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout;
eventi della tastiera: keydown, keyprcss, keyup.

Puoi anche assegnare i tuoi eventi usando il metodo live(). La chiamata ai propri eventi viene eseguita utilizzando i metodi trigger() e trigger-Handler(). Creiamo il nostro evento e poi lo chiamiamo.

$("#divl").live("myEvent", function() (
alert("Gestione evento personalizzato");
});
$(":pulsante").click(funzione() (
$("#divl").trigger("myEvent"); // Chiama l'evento
});

Il parametro Callback> è un riferimento a una funzione del formato seguente.

funzione Nome funzione ([Evento[, Argomenti] ]) (
// ...
}

L'elemento che ha generato l'evento è accessibile all'interno della funzione tramite il puntatore this. Si noti che il puntatore this fa riferimento a un elemento nel Document Object Model, non a un elemento nella raccolta jQuery. Se nel parametro dell'oggetto evento è specificata una variabile, tramite essa è possibile accedere alle proprietà dell'oggetto evento. È possibile specificare più variabili separate da virgole nel parametro Argomenti. I valori possono essere passati a queste variabili utilizzando il secondo parametro dei metodi trigger() e triggerHandler().

$("#divl").bind("myEvent", function(e, msg) (
alert("Gestione eventi personalizzati. " + msg);
});
$(":pulsante").click(funzione() (
$("#divl").trigger("myEvent", ["OurMessaggio"]);
});

Puoi rimuovere un gestore di eventi usando il metodo die(). Formato metodo: die(Tipo evento[, Nome funzione])
Nota
Il metodo die() è disponibile da jQuery 1.3.

Consideriamo un esempio.

$("#btnl").live("clic", funzione()
( avviso("Hai cliccato il pulsante");
});

$("#btnl").die("clic") ; // Rimuovi il gestore
});

Se si specifica il nome della funzione nel secondo parametro, verrà eliminato solo il gestore con quel nome.

funzione f_clickl() (
avviso("Funzionef_clickl()");
}
funzione f_click2() (
avviso("Funzionef_click2()");
$("#btnl").live("click", f_clickl);
$("#btnl").live("click", f_click2);
$("#btn2").click(funzione() (
$("#btnl").die("click", f_click2);
});

!}
!}

In questo esempio, abbiamo assegnato due gestori di eventi clic al primo pulsante. Se si fa clic sul pulsante Cliccami, verranno visualizzati due messaggi.
f_clJck1() funzione
f_clJck2() funzione

Facendo clic sul pulsante Elimina gestore verrà rimosso il gestore eventi denominato f_click2. Ora dopo aver cliccato sul primo pulsante otteniamo solo un messaggio.
funzione f_click1()

Bolle di eventi in jQuery

Che cos'è la "bolla di eventi"? Diamo un'occhiata al seguente esempio (Listato 6.6).

Listato 6.6. Evento spumeggiante



affiorante</i><i>eventi</i><i>





Clictopo qui




In questo esempio, abbiamo scritto un gestore di eventi onclick per tutti gli elementi della pagina. Proviamo a fare clic con il tasto sinistro sulla parola qui. Di conseguenza, invece di un evento, otteniamo un'intera sequenza di eventi.
elemento SPAN
elemento P
elemento CORPO
Elemento HTML

In altre parole, l'evento onclick viene passato in sequenza all'elemento padre successivo. Per un tag span, l'elemento padre è un paragrafo. Per un paragrafo, l'elemento padre è il corpo del documento e per il corpo del documento, l'elemento padre è il tag html. Questo flusso di eventi è chiamato bubbling di eventi.

A volte è necessario interrompere il bubbling degli eventi. Per fare ciò, restituisci false all'interno della funzione di callback. Dimostriamolo con un esempio (Listato 6.7).

Listato 6.7. Interruzione delle bolle di eventi



Interruzione delle bolle di eventi





Clictopo qui




Proviamo ora a fare clic con il pulsante sinistro del mouse sulla parola qui. Di conseguenza, invece di quattro eventi, ne otteniamo solo uno.
elemento SPAN

Oltre a restituire false, è possibile utilizzare il metodo stopPropagation() dell'oggetto evento (Listato 6-8) per interrompere il bubbling degli eventi.

Listato 6.8. Arresto del popup con il metodo stopPropagation()

stopPropagation()


Interrompere le bollicine con un metodo</i><br><i>stopPropagation()





Clictopo qui




Azioni predefinite in jQuery e loro annullamento

A molti eventi sono assegnate azioni predefinite, ad es. azioni che il browser Web esegue in risposta agli eventi che si verificano nel documento. Ad esempio, quando si fa clic su un collegamento ipertestuale, l'azione predefinita è andare all'URL specificato, fare clic sul pulsante Invia comporta l'invio dei dati del modulo e così via.

A volte è necessario interrompere le azioni predefinite. Ad esempio, quando invii i dati del modulo, puoi verificare che corrispondano a ciò che ti aspetti e, se non corrispondono ai tuoi requisiti, interrompere l'invio. Per fare ciò, restituisci false all'interno della funzione del gestore.

Il Listato 6.9 mostra un esempio di convalida dell'immissione di un indirizzo e-mail nel campo E-mail e di interruzione di un collegamento ipertestuale quando si verifica un errore.

Listato 6.9. Interruzione delle azioni predefinite



Interruzione delle azioni predefinite






E-mail:





Clicpertransizionesucollegamento



Oltre a restituire false, è possibile utilizzare il metodo preventDefault() dell'oggetto evento (Listato 6-10) per annullare l'azione predefinita.

Listato 6.10. Interruzione degli eventi con il metodo preventDefault()

preventDefault()


Interruzione di eventi con un metodo</i><br><i>preventDefault()






E-mail:





Clicpertransizionesucollegamento



Tutte le azioni dell'utente durante l'interazione con l'applicazione si riducono allo spostamento del mouse, alla pressione dei pulsanti del mouse e alla pressione dei tasti della tastiera. Consideriamo l'elaborazione in applicazione degli eventi connessi a queste manipolazioni dell'utente.

Eventi del mouse Sequenza di eventi

I componenti Delphi definiscono una serie di eventi del mouse. Questi gli eventi:

OnClick Fare clic con il mouse sul componente e qualche altra azione dell'utente.

OnDblClick Fare doppio clic sul componente.

OnMouseDown Premendo il pulsante del mouse sul componente. È possibile riconoscere il pulsante premuto e le coordinate del cursore del mouse

OnMouseMoveSposta il cursore del mouse sul componente. È possibile il riconoscimento del pulsante premuto e delle coordinate del cursore del mouse.

OnMouseUp Rilascia il pulsante del mouse precedentemente premuto sul componente. È possibile riconoscere il pulsante premuto e le coordinate del cursore del mouse

OnStartDrag Avvia il processo di trascinamento di un oggetto. È possibile il riconoscimento dell'oggetto trascinato.

OnDragOver Sposta l'oggetto trascinato sul componente. È possibile riconoscere l'oggetto trascinato e le coordinate del cursore del mouse.

OnDragDrop Rilasciando il pulsante del mouse precedentemente premuto dopo aver trascinato un oggetto è possibile riconoscere l'oggetto trascinato e le coordinate del cursore del mouse.

OnEndDrag Un altro evento in cui il pulsante del mouse precedentemente premuto viene rilasciato dopo aver trascinato un oggetto. È possibile riconoscere l'oggetto trascinato e le coordinate del cursore del mouse.

OnEnter Un evento nel momento in cui un elemento riceve lo stato attivo come risultato della manipolazione del mouse, della tabulazione o del trasferimento dello stato attivo a livello di codice.

OnExit Evento quando un elemento perde lo stato attivo a causa della manipolazione del mouse, del tasto Tab o del trasferimento programmatico dello stato attivo

OnMouseWheel Evento quando la rotellina del mouse viene ruotata in qualsiasi direzione. Da Delfi 5

OnMouseWheelUp Ruota la rotellina del mouse verso l'alto. Si verifica se la rotazione non è gestita dall'evento OnMouseWheel. Da Delfi 5.

OnMouseWheelDown Ruota la rotellina del mouse verso il basso. Si verifica se la rotazione non è gestita dall'evento OnMouseWheel. Da Delfi 5.

Come puoi vedere, questi eventi coprono ogni possibile manipolazione del mouse e persino duplicano molti di essi. L'evento più utilizzato al clic. Di solito si verifica quando l'utente ha fatto clic sul componente, ad es. premuto e rilasciato il pulsante del mouse mentre il puntatore del mouse era sopra il componente. Ma questo evento si verifica anche su alcune altre azioni dell'utente. Si verifica se:

L'utente ha selezionato un elemento nella griglia, albero, elenco, menu a discesa premendo un tasto freccia.

L'utente ha premuto la barra spaziatrice mentre il pulsante o l'indicatore era a fuoco.

L'utente ha premuto il tasto Invio e il modulo attivo ha un pulsante predefinito specificato dalla proprietà predefinito.

L'utente ha premuto il tasto Esc e il modulo attivo ha un pulsante di interruzione specificato dalla proprietà Annulla.

L'utente ha premuto le scorciatoie da tastiera per un pulsante o un indicatore. Ad esempio, se la proprietà Didascalia l'indicatore viene scritto come "&Bold" e il carattere "P" è sottolineato, quindi premendo la combinazione di tasti Alt-P da parte dell'utente si attiverà l'evento al clic in questo indicatore.

App installata in VERO proprietà Controllato tasti della radio pulsante di opzione.

L'applicazione ha modificato una proprietà Controllato indicatore casella di controllo.

Metodo chiamato Clic elemento menù.

Per evento modulo al clic si verifica se l'utente ha cliccato su un'area vuota del form o su un componente inaccessibile.

L'abbondanza di eventi associati al mouse, così come l'effettiva duplicazione di alcuni di essi, richiedono una chiara comprensione della sequenza dei singoli eventi che si verificano con una particolare azione dell'utente. Diamo un'occhiata a queste sequenze.

Al momento del lancio dell'applicazione, degli eventi che stiamo considerando, si verifica solo l'evento OnEnter nel componente su cui viene trasferito il focus. Questo evento non è associato ad alcuna azione dell'utente, quindi non ci soffermeremo su di esso.

Consideriamo ora l'azione più semplice dell'utente: spostare lo stato attivo da un elemento all'altro con il mouse. La sequenza degli eventi in questo caso è riportata nella tabella. uno.

Tabella 1. Sequenza degli eventi del mouse quando si cambia lo stato attivo

Azione dell'utente

Spostando il cursore del mouse all'interno del primo componente

Molti eventi OnMouseMove nel primo componente

Spostare il cursore del mouse all'interno di un modulo

Molti eventi OnMouseMove su un modulo

Spostando il cursore del mouse all'interno del secondo componente

Molti eventi OnMouseMove nel secondo componente

Clic del mouse

OnExit nel primo componente

OnEnter nel secondo componente

OnMouseDown nel secondo componente

Rilasciando il pulsante del mouse

OnClick nel secondo componente

OnMouseUp nel secondo componente

Eventi OnMouseMove si verificano costantemente durante lo spostamento del cursore del mouse e anche solo quando trema, cosa inevitabile se l'utente non rimuove le mani dal mouse. Questo deve essere preso in considerazione e questo evento dovrebbe essere utilizzato con molta attenzione, poiché, a differenza di altri, si verifica ripetutamente.

Come si evince dalla tabella sopra, ogni azione dell'utente associata alla pressione o al rilascio del pulsante del mouse porta ad una serie di eventi consecutivi. Nei gestori di eventi OnMouseDown e OnMouseUp è possibile riconoscere quale pulsante del mouse viene premuto e dove si trova attualmente il cursore del mouse sul componente.

Considerato in tabella. 1 sequenza di eventi si verifica se la proprietà nel secondo componente Modalità trascinamentoè uguale a dmManual (avvio manuale del processo di trascinamento), come impostato per impostazione predefinita. Se questa proprietà è dmAutomatico(avvio automatico del processo di trascinamento della selezione), quindi tutti gli eventi considerati relativi alla manipolazione del mouse vengono sostituiti dai seguenti:

OnMouseDown sostituito con OnStartDrag

Se si preme il pulsante e si sposta il cursore del mouse, allora

OnMouseMove Sostituito con l'evento OnDragOver del componente su cui si sta spostando il cursore del mouse

OnMouseUp Sostituito con l'evento OnDragDrop del componente su cui termina il trascinamento (se il componente può accettare informazioni dall'oggetto trascinato) e il successivo evento OnEndDrag del componente trascinato

Eventi in uscita e OnEnter non si verificano affatto, poiché non vi è alcun cambio di messa a fuoco. L'evento non si verifica al clic.

Se, nell'esempio riportato in Tabella 1, il click viene effettuato su un oggetto che è già a fuoco in quel momento, allora non si verificano eventi in uscita e onEnter. A In questo caso, quando si fa clic sul pulsante, si verifica solo l'evento SuMouseGiù, e quando il pulsante viene rilasciato - eventi OnClick e OnMouseUp.

Consideriamo ora la sequenza di eventi quando si fa doppio clic su un componente. È riportato nella tabella. 2. Il riconoscimento del pulsante premuto del mouse è ancora possibile solo negli eventi OnMouseDown e OnMouseUp. Se è necessario riconoscere esattamente il doppio clic di un determinato pulsante del mouse, è possibile, ad esempio, inserire una determinata variabile che è il flag del doppio clic, impostare questo flag nel gestore dell'evento OnDblClicK, e nei gestori di eventi OnMouseDown o Su Mouse Su spuntare questo flag e, se è impostato, reimpostarlo ed eseguire le azioni pianificate.

Tabella 2. Sequenza degli eventi del mouse quando si fa doppio clic su un componente

Azione dell'utente

Primo clic del mouse

OnMouseDown. È possibile il riconoscimento del pulsante premuto e delle coordinate del cursore del mouse.

Primo rilascio del pulsante del mouse

Secondo clic del mouse

OnMouseDown. È possibile il riconoscimento del pulsante premuto e delle coordinate del cursore del mouse.

Secondo rilascio del pulsante del mouse

Su Mouse Su. È possibile il riconoscimento del pulsante premuto e delle coordinate del cursore del mouse.

Articoli correlati in alto