Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • vijesti
  • Učenje Jave. Javascript događaji miša

Učenje Jave. Javascript događaji miša

Ovaj članak će se fokusirati na Javascript događaje miša. Ovi događaji su veoma važni u Javascriptu i koriste se na svakom koraku. Prvo ću vas provesti kroz sve standardne događaje miša: mousedown, mouseup, click, dblclick, mousemove i na kraju mouseover i mouseout.

Događaji spuštanja miša, podizanja miša i klika

Kada korisnik klikne na element, aktiviraju se najmanje 3 događaja miša ovim redoslijedom:

  1. mousedown, korisnik je pritisnuo dugme miša na elementu
  2. mouseup, korisnik je otpustio tipku miša na elementu
  3. klik, mousedown i mouseup događaji su otkriveni na elementu

Općenito, događaji mousedown i mouseup korisniji su od događaja klikova. Ponekad korisnik klikne mišem, ali klik se ne aktivira.

Pretpostavimo da korisnik klikne dugme na linku, zatim pomeri kursor negde u stranu i otpusti dugme. Veza je samo obrađivala događaj mousedown. Također možete reproducirati suprotnu situaciju kada korisnik pritisne tipku miša, a zatim pređe mišem preko veze i otpusti dugme. Aktivira se samo događaj mouseup. U drugim slučajevima se aktivira klik.

U svakom slučaju, ovaj problem se javlja samo ako to želite.Morate registrovati rukovaoce za onmousedown/up događaje, ali u većini slučajeva je dovoljan klik događaj.

Zapamtite da ako koristite alert "s, pretraživač se može zbuniti i izgubiti redoslijed događaja koji se izvršavaju i broj njihovih poziva.

Dblclick događaj (dvostruki klik)

Događaj dblclick je mnogo rjeđi od bilo kojeg drugog događaja miša. Ako ga koristite, pazite da ne koristite onclick i ondblclick obrađivače događaja za isti HTML element. Gotovo je nemoguće utvrditi šta je korisnik učinio u ovom slučaju.

Kada korisnik dvaput klikne na element, prvo se pokreće klik događaj, a tek onda dblclick. Korištenje poruka upozorenja ovdje je također izuzetno opasno.

Mousemove događaj

Događaj mousemove radi dobro, ali morate zapamtiti da ova vrsta događaja može potrajati neko vrijeme za obradu. Događaj mousemove pokreće se kada korisnik pomjeri kursor miša za jedan piksel. Čini se da se ništa posebno ne događa, ali unutra postoje složene funkcije, čije izvršavanje traje dugo. To može dovesti do nestabilnog rada web lokacije. Stoga je najbolje koristiti onmousemove obrađivač događaja samo tamo gdje vam je zaista potreban i obavezno ga uklonite u budućnosti.

Element.onmousemove = doSomething;
// kasnije
element.onmousemove = null;

Događaji prelaska miša i povlačenja miša

Uzmimo brzi primjer. Pokušajte da postavite pokazivač miša preko elemenata s različitim pozadinama. Element 1 bi trebao lagano treptati kada se lebdi iznad njega - ovo pokreće događaj prelaska miša.

Element№1

Element№2 raspon

Ipak, kao što možete vidjeti, ovaj događaj se također pokreće kada postavite pokazivač miša preko elementa #2, pa čak i raspona.

Razlog za ovakvo ponašanje je taj što se događaj postavljen na prvom elementu također primjenjuje na njegove podređene čvorove. Sve je vrlo jasno, ali problem nastaje kada trebamo izvršiti neku radnju kada se kursor miša pomjeri, na primjer, sa elementa span na element broj 2.

"Odakle je došao miš?" ili srodni Target, svojstva fromElement i toElement

Microsoft je kreirao dva uređaja za pohranjivanje ovih informacija:

  • fromElement - odnosi se na element iz kojeg je došao miš.
  • toElement - element do kojeg je došao miš.

Crossbrowser kod

Dakle, ako želite znati odakle je došao miš koristeći događaj prelaska miša, koristite sljedeću skriptu:

Funkcija doSomething (e) (
var relTarg = e.relatedTarget || e.fromElement;
}

U slučaju korištenja događaja mouseout (element na koji se pomiče kursor):

Funkcija doSomething (e) (
if (! e) var e = window.event;
var relTarg = e.relatedTarget || e.toElement;
}

Mouseenter i mouseleave

Microsoft nudi još jedan način rješavanja problema. Stvorili su 2 nova događaja mouseenter i mouseleave. Ovi događaji imaju isto ponašanje kao prelazak mišem i izlazak miša. Jedina razlika je što događaji ne "skaču" na djecu. Ovo vrlo dobro rješava naš problem prikazan u primjeru.

Pa, to je sve o čemu sam želeo da pričam u vezi sa Javascript događajima miša. Rado ću odgovoriti na vaše komentare.

Dobar dan, radoznali pretplatnici i gosti bloga. Danas ćemo vas provesti kroz koristan odeljak u jeziku skriptiranja zasnovanom na prototipu, odnosno događaju prelaska miša u JavaScript.

Želim da imate dobro razumijevanje događaja kao što su klik, mouseup, mousedown, mouseover i drugi, shvatite razliku između njih i naučite kako ih koristiti za rješavanje zadataka koji su pred vama. Naravno, nakon svakog ključnog teorijskog materijala, možete pronaći softversku implementaciju primjera. Pa, hajde da počnemo!

Sve informacije o događajima miša

Postoji nekoliko događaja za miš koji u potpunosti pokrivaju sve moguće radnje kursora na stranici. Među njima su i oni koji se pokreću kada kliknete na objekat, zadržite pokazivač miša iznad njega ili pomerite pokazivač preko otvorenog prozora. Svi se mogu podijeliti u dvije grupe: jednostavne i složene (kompozitne) događaje.

Počnimo jednostavno

Prvo, hajde da se upoznamo sa jednostavnim događajima. Ima ih samo pet. Radi praktičnosti, uključio sam opis svakog alata u donju tabelu.

Ime Opis
mousedown Imenovani događaj se poziva kada se pritisne jedno od tipki miša, ali još nije otpušteno.
mouseup A ovaj se aktivira već kada otpustite prethodno stegnuto dugme.
prelazak miša Poziva se kada kursor lebdi iznad objekta koji se obrađuje.
mouseout Rukuje radnjom kursora koji napušta područje elementa.
mousemove Svako pomicanje pokazivača preko određenog područja pokreće trenutni događaj.

Pa, sada, da konsolidujemo materijal, pogledajmo primjer. Napravio sam mali program u kojem se emocije emotikona mijenjaju pri lebdenju i pomicanju kursora.

Pomerite kursor miša preko slike i ona će se promeniti.

Sada ga odvedite na stranu i gledajte promjene

Vrijeme je za grupisanje

Sada pređimo na složene poglede. Svaki od ovih događaja uključuje nekoliko jednostavnih. U ovom slučaju, sve komponente složenog događaja se ne aktiviraju istovremeno, već se postrojavaju. Stoga ponekad možete primijetiti takvu situaciju da kada brzo kliknete na, na primjer, stavke menija na web stranici, klik ponekad ne funkcionira.

Zašto je tako? Odgovor je dovoljno jednostavan.

Obrada događaja se odvija pri određenoj maksimalnoj brzini. I u isto vrijeme, ne zaboravite da se događaji obrađuju redom. To znači da ako kliknete na različite elemente prebrzo, lanac obrade možda neće biti u potpunosti izvršen.

Dakle, složeni događaji su navedeni u nastavku.

Kao što ste već shvatili, složeni događaji donekle pojednostavljuju život programera, uključujući skup potrebnih jednostavnih događaja odjednom. Kao rezultat toga, danas niko ne može zamisliti uobičajeno rukovanje dugmadima ili drugim elementima bez istih kliknite.

Radi praktičnog upoznavanja sa funkcionisanjem gore navedenih događaja izmenio sam prethodnu aplikaciju. Analiziraj rezultat mog rada.

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 Primjer prelaska miša iznad elementa stranice

Primjer prelaska miša iznad elementa stranice

Kao što vidite, sve je vrlo jednostavno. Ove elemente je lako pozvati u kodu i povezati ih sa određenim radnjama.

JQuery događaji pomažu da web stranice budu interaktivne, reagujući na najjednostavnije radnje korisnika. Događaji predstavljaju tačan trenutak u kojem se nešto događa, kao što je klik mišem.

Trenutak u kojem se događaj dogodio se zove pokretanjem događaja... Događaji se mogu pokrenuti prilikom izvođenja različitih operacija na web stranici. Osim toga, sam pretraživač može postati izvor događaja.

Kontroliranje web stranice pomoću jQuery događaja

1. Događaji miša

.klikni ()
Ovaj događaj se pokreće kada pritisnete i otpustite dugme miša. Primjenjuje se na veze, slike, dugmad, pasuse, blokove itd.

.dblclick ()
Događaj se pokreće kada dvaput kliknete i otpustite tipku miša, na primjer, otvorite mapu na radnoj površini.

.mousedown ()
Događaj se događa kada se pritisne tipka miša, na primjer pri prevlačenju stavki.

.mousemove ()
Događaj se pokreće kada pređete mišem preko stranice.

.mouseout ()
Događaj se pokreće kada odmaknete miš od elementa.

.mouseover ()
Događaj se pokreće kada zadržite pokazivač miša iznad elementa (slično korišćenju: hover pseudo-klase).

.mouseup ()
Događaj se pokreće kada otpustite tipku miša.

2. Događaji dokumenta / prozora

.load ()
Događaj se pokreće kada pretraživač učita sve datoteke web stranice: html datoteke, eksterne css i javascript datoteke, medijske datoteke. Ovo može biti nezgodno ako web stranica sadrži veliki broj datoteka. Da biste riješili ovaj problem, možete koristiti funkciju ready () koja pokreće skripte odmah nakon učitavanja html koda.

.resize ()
Događaj se pokreće kada promijenite veličinu prozora pretraživača.

.scroll ()
Događaj se pokreće kada koristite trake za pomicanje, ili pomičete web stranicu pomoću kotačića miša, ili koristite tipke na tastaturi u ove svrhe (pg up, pg dn, home, end).

.istovariti ()
Događaj se pokreće kada se spremate da napustite stranicu, kliknete na vezu da biste otišli na drugu stranicu, zatvorite karticu stranice ili zatvorite prozor pretraživača.

3. Formirajte događaje

.blur ()
Događaj se pokreće kada je polje obrasca izvan fokusa, tj. unijeli ste podatke u polje obrasca i otišli na drugo.

.promjena ()
Događaj se pokreće kada se status polja obrasca promijeni, na primjer, kada se stavka odabere iz padajućeg izbornika.

.focus ()
Događaj se pokreće kada dođete do polja obrasca klikom na dugme miša ili karticu.

.resetovati ()
Događaj vam omogućava da vratite obrazac u prvobitno stanje, poništavajući izvršene promjene.

.odaberi ()
Događaj se pokreće kada odaberete tekst unutar okvira za tekst obrasca.

.submit ()
Događaj se pokreće kada pošaljete popunjen obrazac klikom na dugme Pošalji ili pritiskom na tipku Enter dok je kursor postavljen u okvir za tekst.

4. Događaji na tastaturi

.keydown ()
Događaj se pokreće kada se pritisne tipka, prije događaja pritiska na tipku.

.keypress ()
Događaj se pokreće kada pritisnete tipku dok ne otpustite tipku.

.keyup ()
Događaj se pokreće kada otpustite tipku.

5. jQuery događaji

.hover ()
Ova funkcija radi kao događaj, omogućavajući vam da istovremeno riješite dva problema vezana za događaj prelaska pokazivača miša preko i događaj uklanjanja pokazivača miša u odnosu na odabrani objekt. Glavna struktura funkcije:
$ ("# selektor").hover (funkcija1, funkcija2);

.toggle ()
Događaj funkcionira slično kao i lebdeći () događaj, s tom razlikom što se događaj pokreće klikom miša. Na primjer, možete otvoriti padajući meni jednim klikom i sakriti se drugim.

6. Objekt događaja

Kada se događaj pokrene, pretraživač pohranjuje informacije o njemu objekt događaja... Objekt događaja sadrži podatke prikupljene u vrijeme kada se događaj dogodio. Događajem se rukuje pomoću funkcije, a objekt se prosljeđuje funkciji kao argument - varijabla evt (možete koristiti i događaj ili samo e kao ime varijable). Da biste pristupili argumentu, morate funkciji dodati ime parametra. Unutar ove funkcije možete pristupiti različitim svojstvima koristeći sintaksu tačke. Kada se funkcija pozove, objekt događaja se pohranjuje u varijablu evt.
Objekt događaja ima različita svojstva, od kojih su najčešća opisana u donjoj tabeli.

Tablica 1. Svojstva objekta događaja
Nekretnina Opis
pageX Udaljenost (px) od pokazivača miša do lijeve ivice prozora pretraživača
pageY Udaljenost (px) od pokazivača miša do gornje ivice prozora pretraživača
screenX Udaljenost (px) od pokazivača miša do lijeve ivice monitora
screenY Udaljenost (px) od pokazivača miša do gornje ivice monitora
shiftKey TRUE ako je tipka SHIFT bila pritisnuta kada se događaj dogodio
koji Koristi se za određivanje numeričkog koda pritisnute tipke (zajedno sa shiftKey)
cilj Znači da je na objekt događaja kliknut tipkom miša (na primjer, za događaj klik ())
podaci Objekt koji se koristi s funkcijom bind () za prosljeđivanje podataka funkciji upravljanja događajima

Dok nastavljamo sa istraživanjem jQueryja, pređimo na istraživanje teme rukovanja događajima u jQueryju.

Dokument događaji
Događaji se javljaju kada korisnik stupi u interakciju s web stranicom. Događaji su vrsta obavijesti iz sistema da je korisnik izvršio neku radnju ili da je došlo do nekog stanja unutar samog sistema. Događaji se pokreću klikom na element, pomicanjem miša, pritiskom na tipku na tipkovnici, promjenom veličine prozora, završetkom učitavanja web stranice i još mnogo toga. Znajući koje događaje ovaj ili onaj element web stranice može generirati, možete napisati funkciju za rukovanje ovim događajem. Na primjer, prilikom slanja podataka obrasca, onsubmit događaj se pokreće. Kada dođe do ovog događaja, možete provjeriti podatke koje je unio korisnik, a ako se ne poklapaju sa očekivanim, prekinuti slanje podataka.

Na samom početku knjige već smo razmatrali mogućnost izvršavanja skripti odmah nakon formiranja strukture dokumenta, bez čekanja na učitavanje ostalih elemenata. Kao što već znate, ovaj događaj možete rukovati pomoću metode ready ().


alert ("Dokument je dostupan za izvršavanje skripti");
});

Ako trebate izvršiti bilo koju radnju tek nakon što se sam HTML dokument u potpunosti učita, kao i svi ostali elementi (na primjer, slike), onda možete koristiti metodu load (). Sintaksa metode je sljedeća.

učitavanje (funkcija povratnog poziva)

funkcija<Название функции>([Objekat događaja]) (
// ...
}

Prikažimo poruku potvrde i tip događaja nakon što se web stranica potpuno učita.

$ (prozor) .load (funkcija (e) (
upozorenje ("Dokument je potpuno učitan");
upozorenje ("Tip događaja" + e.type);
});

Kao rezultat izvršenja, dobićemo dvije poruke.

Dokument je u potpunosti učitan
Učitaj tip događaja

Metoda unload () koristi se za izvođenje bilo koje radnje neposredno prije uklanjanja dokumenta. Metoda ima sljedeću sintaksu.
istovar (funkcija povratnog poziva)

Parametar Callback Function specificira referencu funkcije u sljedećem formatu.

funkcija<Название функции>([<Объект event>]) {
// ...
}
Hajde da prikažemo poruku pre nego što učitamo dokument.
$ (prozor) .unload (funkcija ()
(upozorenje ("Uđiviše!");
});

U ovom dijelu ćemo pogledati još dvije korisne metode.

promjena veličine (povratni poziv) - Izvršava se kada se promijeni veličina prozora.

pomicanje (povratni poziv) - Izvršava se kada se pomiče sadržaj stranice, dokumenta, prozora ili elementa okvira.

Parametar Callback Function specificira referencu funkcije u sljedećem formatu.
funkcija Naziv funkcije ([Objekat događaja]) (
// ...
}

Možete upravljati pomicanjem sadržaja prozora i prikazati poruku na sljedeći način.
$ (prozor) .scroll (funkcija () (
upozorenje ("Skrolovanje sadržaja prozora");
});

Kao primjer korištenja metode resize (), dobijte širinu i visinu prozora nakon promjene veličine (listing 6.1).

Listing 6.1. Prikaz širine i visine prozora prilikom promjene veličine



Prikaz širine i visine prozora prilikom promjene</i><br><i>veličina</i><i>





Kada se promeni veličina prozora u elementu sa divl identifikatorom, biće prikazana širina i visina prozora.

Metoda greške (povratni poziv) se poziva kada postoji greška na stranici ili JavaScript-u. Parametar Callback Function specificira referencu funkcije u sljedećem formatu.

funkcija Naziv funkcije ([Poruka [, URL [, Broj linije]]]) (
// ...
}

Ako se greška dogodila u objektu prozora, tada će u funkciji povratnog poziva biti dostupna tri parametra:

Poruka - tekst koji opisuje grešku;
URL je puni URL dokumenta o grešci.
Broj reda - broj reda sa greškom.

Da biste sakrili JavaScript greške od korisnika, vratite true unutar funkcije povratnog poziva.

$ (prozor) .error (funkcija () (
return true;
});

Koristeći metodu error (), možete riješiti grešku učitavanja slike.

$ ("img"). greška (funkcija () (
$ (ovo) .attr ("src", "noimage.gif");
});

Bilješka
Da bi ovaj primjer ispravno funkcionisao, morate postaviti skriptu na server. U suprotnom, događaj neće biti obrađen.

Događaji miša u jQueryju

Sledeće metode su obezbeđene za rukovanje događajima miša u jQueryju.

Klik ([Povratni poziv]) - Izvršava se kada se klikne na element ili web stranicu. Ako parametar nije naveden, simuliraće se klik na element. Onclick događaju prethode dva događaja: onmousedown i onmouseup. Hajde da prikažemo poruku nakon klika na bilo koje dugme.
$ ("ibutton") .click (funkcija () (
});

Prebaci () - Omogućuje vam izmjenu više funkcija kada kliknete na element ili web stranicu. Funkcije se pozivaju redom. Prvi klik poziva prvu funkciju, drugi, drugu, a treći, treću. Ako treća funkcija nije definirana, onda se prva funkcija ponovo poziva i tako dalje. Metoda toggle () ima sljedeći format.
prebaci (<Функция обратного вызова 1>,
<Функция обратного вызова 2>[,
<Функция обратного вызова N>])

Učinimo da se boja teksta pasusa promijeni nakon svakog klika mišem.
$ ("p").
(funkcija () (
$ (ovo) .css ("boja", "crveno");
funkcija () (
$ (ovo) .css ("boja", "plavo");
funkcija () (
$ (ovo) .css ("boja", "zeleno");
}
) .kliknite ();

Pokušajte kliknuti na pasus nekoliko puta. Boja teksta će se mijenjati uzastopno od crvene do plave, od plave do zelene, od zelene do ponovno crvene. Obratite pažnju na zadnji red primjera. Nakon dodjeljivanja rukovatelja događajima, onclick događaj se poziva pomoću metode click () bez parametara. Iz tog razloga, boja pasusa će biti crvena od samog početka.

Dblclick ([Callback Function]) - Izvršava se kada dvaput kliknete na element ili web stranicu. Ako parametar nije naveden, simuliraće se dvostruki klik na element. Ondblclick događaju prethode tri događaja: onmousedown, onmouseup i onclick. Hajde da prikažemo poruku kada dvaput kliknete na bilo koji pasus.
$ ("p"). dblclick (funkcija () (
upozorenje ("Kliknuli ste dvaput");
});

mousedown (povratni poziv) - Izvršava se kada se pritisne tipka miša na elementu ili stranici. Događaj onmousedown pokreće se prije događaja onmouseup i onclick.

mouseup (Povratni poziv) - Izvršava se kada se otpusti prethodno pritisnuto dugme miša. Događaj onmouseup pokreće se između događaja onmousedown i onclick. Hajde da prikažemo poruke kada kliknemo i otpustimo dugme miša preko pasusa.

$ ("p"). mousedown (funkcija () (
$ ("# divl"). append ("Onmousedown događaj" + "
");
)). mouseup (funkcija () (
$ ("# divl"). append ("Onmouseup događaj" + "
");
});
<р>Kliknite me

Mousemove - Izvršava se svaki put kada se miš pomjeri. Hajde da prikažemo poruku kada pomeramo kursor preko pasusa.

$ ("p") .mousemove (funkcija () (
$ ("# divl"). append ("Onmousemove događaj" + "
");
});

mouseover (povratni poziv) - Izvršava se kada miš pređe iznad elementa.

mouseout (povratni poziv) - Izvršava se kada kursor miša napusti element. Kada pređete mišem preko linka, boju linka ćemo učiniti crvenom i prikazati poruku, a kada kursor napusti link, promijenit ćemo njenu boju u crnu i prikazati poruku.

$ ("a") .prelazak miša (funkcija () (
$ (ovo) .css ("boja", "crveno");
$ ("# divl"). append ("Događajprelazak miša na "+"
");

)). mouseout (funkcija () (
$ (ovo) .css ("boja", "crno");
$ ("# divl"). append ("Događajonmouseout "+"
");

}>;

Hover () - omogućava vam da upravljate lebdenjem i ostavljanjem elementa jednom metodom. Ima sljedeći format.
lebdeći (povratni poziv za događaj onmouseover, povratni poziv za događaj onmouseout)

Ponovimo naš prethodni primjer i koristimo metodu hover ().

$ ("a"). lebdeći (funkcija () (
$ (ovo) .css ("boja", "crveno");
$ ("# divl"). append ("Onmouseover događaj" + "
"); },
funkcija () (
$ (ovo) .css ("boja", "crno");
$ ("# divl"). append ("Onmouseout događaj" + "
");
});

Metoda hover () ima još jednu prednost. Ako unutar bloka postoji još jedan blok, tada će se pojedinačne funkcije pozivati ​​pri ulasku u unutrašnji blok, kao i pri izlasku iz njega. Kada koristite metodu lebdenja () ovi pokreti će biti zanemareni (Listing 6.2).

Listing 6.2. Specifičnosti korištenja lebdeće metode()



Specifičnosti upotrebe metode hover ().






Odabranorukovaoci:



Linija 1

Linija 2



Funkcijalebdjeti ():



Linija 1

Linija 2




Za prvi ugniježđeni blok, definirali smo odvojene rukovaoce događajima. Ako pomjerimo kursor miša preko cijelog bloka u sredini, dobićemo sljedeći niz događaja.
Onmouseover događaj
Onmouseout događaj
Onmouseover događaj
Onmouseout događaj
Onmouseover događaj
Onmouseout događaj

Za drugi ugniježđeni blok, obrađivači događaja se dodijeljuju pomoću metode hover (). Sa istom akcijom dobit ćemo samo dva događaja.
Onmouseover događaj
Onmouseout događaj

U svim metodama predstavljenim u ovom odjeljku, još nismo otkrili parametre koji im se mogu prenijeti.


// ...
}

Element koji je pokrenuo događaj je dostupan unutar funkcije preko pokazivača this. Imajte na umu da se pokazivač this odnosi na element u objektnom modelu dokumenta, a ne na element u kolekciji jQuery. Ako je varijabla navedena u parametru objekta događaja, onda preko nje možete pristupiti svojstvima objekta događaja. Hajde da napišemo obrađivač klikova mišem za dva elementa odjednom. Kada se pritisne, prikazuje naziv oznake u elementu sa divl identifikatorom.

$ ("str, div "). kliknite (funkcija (npr) {
$ ("# divl")
.append ("Element"+ e.srcElement.tagName +"
");

});

Događaji tastature u jQueryju

JQuery pruža sljedeće metode za rukovanje događajima na tastaturi.

keydown - Izvršava se kada se pritisne tipka na tastaturi.

keyprcss (Funkcija povratnog poziva) - Izvršava se kada se pritisne tipka na tipkovnici. Isto kao keydown (), ali vraća vrijednost koda znaka Unicode. Događaj se generira kontinuirano sve dok korisnik ne otpusti ključ.

keyup (funkcija povratnog poziva) - Izvršava se kada se otpusti prethodno pritisnuti taster na tastaturi.

Kao parametar funkciji povratnog poziva, specificirate referencu na funkciju u sljedećem formatu.

funkcija Naziv funkcije ([Objekat događaja]) (
// ...
}

Ako je varijabla navedena u parametru objekta događaja, onda preko nje možete pristupiti svojstvima objekta događaja. Na primjer, da biste dobili šifru pritisnute tipke, možete koristiti svojstvo šifre ključa. Kao primjer, uzmimo šifru pritisnute tipke i demonstriramo slijed događaja (Listing 6.3).

Listing 6.3. Događaji na tastaturi



Događaji</i><i>tastature</i><i>








Označite okvir za tekst i pritisnite tipku na tastaturi. Na primjer, pritisnite tipku A sa ruskim rasporedom tastature. Kao rezultat toga, dobit ćemo sljedeću poruku.
tastatura 70
keyprcss 1072
ključ 7 0

Formirajte događaje u jQueryju

Sljedeće metode su dizajnirane za rukovanje događajima iz forme.

fokus ([Callback]) - izvršava se kada element obrasca primi fokus. Ako parametar nije specificiran, tada će element dobiti ulazni fokus.

zamućenje ([Callback]) - Izvršava se kada element obrasca izgubi fokus. Ako parametar nije specificiran, tada će element izgubiti fokus na unosu.

promjena (povratni poziv) - Izvršava se kada se podaci u tekstualnom polju promijene i fokus se pomjeri na drugi element obrasca ili kada se podaci obrasca predaju.

submit ([Callback Function]) - Izvršava se kada se podaci obrasca predaju. Ako parametar nije naveden, obrazac će biti dostavljen.

select ([Callback Function]) - Izvršava se kada je odabran sadržaj elementa. Ako parametar nije naveden, tada će sadržaj elementa biti potpuno odabran.

Kao parametar funkciji povratnog poziva, specificirate referencu na funkciju u sljedećem formatu.

funkcija Naziv funkcije ([Objekat događaja]) (
// ...
}

Element koji je pokrenuo događaj je dostupan unutar funkcije preko pokazivača this. Imajte na umu da se pokazivač this odnosi na element u objektnom modelu dokumenta, a ne na element u kolekciji jQuery. Ako je varijabla navedena u parametru objekta događaja, onda preko nje možete pristupiti svojstvima objekta događaja.

Hajde da demonstriramo kako rukovati raznim događajima u formi (listing 6.4).



Događaji</i><i>oblik</i><i>










!}

id = "btn2">

!}

Dakle, kreirali smo obrazac sa tri elementa. Kada izaberete stavku sa liste, prikazaće se poruka sa vrednošću izabrane stavke. Ako odaberete tekstualno polje, boja pozadine će se promijeniti, a ako uklonite fokus iz polja, boja pozadine će ponovo postati bijela. Klikom na dugme Pošalji prikazuje se dijaloški okvir koji možete koristiti da prekinete podnošenje podataka obrasca. Ispod obrasca se nalaze četiri dugmeta. Prvo dugme vam omogućava da izaberete sadržaj okvira za tekst. Nakon odabira, biće prikazana poruka o odabiru fragmenta, pošto smo definisali odgovarajući rukovalac. Ista poruka se može dobiti korištenjem miša za odabir fragmenta u polju. Drugo dugme vam omogućava da postavite fokus unosa na tekstualno polje, a treće - da ga uklonite. Konačno, četvrto dugme služi za podnošenje podataka obrasca. Klikom na ovo dugme prikazuje se dijaloški okvir za potvrdu slanja podataka.

JQuery generički obrađivači događaja

U prethodnim odjeljcima, pogledali smo specifične obrađivače događaja. Biblioteka jQuery vam takođe omogućava da dodelite rukovaoce za različite događaje (uključujući vaše sopstvene događaje) u jednoj metodi. Sljedeće metode se koriste za dodjelu, pozivanje i uklanjanje rukovatelja.

Povezivanje (Tip događaja [, Podaci], Funkcija povratnog poziva) - omogućava vam da dodijelite rukovaoce svim elementima kolekcije. U parametru Event Type mogu se navesti sljedeće vrijednosti:
događaji u dokumentu: učitavanje, istovar, promjena veličine, skrolovanje, greška;
događaji miša: klik, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave;
događaji na tastaturi: keydown, keyprcss, keyup;
događaji forme: fokus, zamućenje, promjena, odabir, slanje.

Već smo razmotrili skoro sve ove događaje u prethodnim odjeljcima. Na primjer, možete dodijeliti rukovao događajima klika svim dugmadima poput ove.

$ (": dugme") .bind ("klik", funkcija ()
(upozorenje („Tipritisnutnadugme");
});

Dva događaja miša ostaju nerazmotrena. Događaj mouseenter pokreće se kada miš pređe preko elementa, a događaj napuštanja miša pokreće se kada miš napusti element. Korištenje ovih događaja razlikuje se od rukovanja događajima prelaska miša i izlaska miša. Ako postoji drugi blok unutar bloka, tada će se događaj prelaska miša pokrenuti pri ulasku u unutrašnji blok, a događaj mouseout pri izlasku iz njega. Kada koristite događaje mouseenter i mouseleave, ovi pokreti će biti zanemareni (listing 6.5).

Listing 6.5. Mouseenter i mouseleave događaji



Događaji</i><i>mouseenter i</i><i>mouseleave

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





Događajiprelazak miša imouseout:



Linija 1

Linija 2



Događajimouseenter imouseleave:



Linija 1

Linija 2




Za prvi ugniježđeni blok definirali smo obrađivače događaja za prelazak miša i izlazak miša. Ako pomjerimo kursor miša preko cijelog bloka u sredini, dobićemo sljedeći niz događaja.
Događaj prelaska miša
Mouseout događaj
Događaj prelaska miša
Mouseout događaj
Događaj prelaska miša
Mouseout događaj

Za drugi ugniježđeni blok, mouseenter i mouseleave rukovaoci događaja su dodijeljeni. Sa istom akcijom dobijamo samo dva događaja.
Događaj Mouseenter
Događaj Mouseleave

Parametar Tip događaja može sadržavati kombinaciju događaja odvojenih razmakom. Hajde da promenimo klasu veze pri lebdenju i izbrišemo klasu kada kursor napusti.

$ ("a") .bind (" mouseenter mouseleave ", funkcija () (
$ (ovo) .toggleClass ("clsl");
});

Osim toga, možete dodijeliti vlastite događaje pomoću metode bind (). Vaši vlastiti događaji se pozivaju pomoću metoda okidača () i triggerHandler (). Kreirajmo vlastiti događaj i onda ga nazovimo.

$ ("# divl"). bind ("myEvent", funkcija () (
upozorenje ("Upravljanje vlastitim događajem");
});
$ ("# divl"). okidač ("myEvent11); // Podigni događaj

Kao parametar funkciji povratnog poziva, specificirate referencu na funkciju u sljedećem formatu.

funkcija Naziv funkcije ([Događaj objekta [, Argumenti]]) (
// ...
}

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

});
$("# divl").trigger ("myEvent", ["Naša poruka"]);

Koristeći opcijski parametar podataka, možete proslijediti vrijednosti funkciji rukovatelja. Za to, preneseni parametri i vrijednosti moraju biti specificirani na sljedeći način.
{
Parametar1: "Vrijednost1",
Parametar2: "Vrijednost2",
Parametri: "Vrijednost"
}

Možete dobiti vrijednost proslijeđenog parametra unutar funkcije ovako.
3value = Objektni događaj.podaci.Parametar

Pogledajmo primjer.

funkcija f_klik (e) (
var str = "msgl = 11 + e.data.msgl +" \ n ";
str + = "msg2 = 11 + e.data.msg2; upozorenje (str);
return false;
}
$ ("a") .bind (
"klik", // Događaj
(msgl: "Poruka 1", msg2: "Poruka 2"), // Naši podaci
f_click // Veza do funkcije
) ;

msgl = Poruka 1
msg2 = Poruka 2

Više rukovatelja može se dodijeliti jednom događaju. U ovom slučaju, oni će biti pozvani redoslijedom kojim su definirani.


upozorenje („Prvorukovalac");
});
$ ("# btnl"). bind ("klik", funkcija () (
upozorenje („Drugorukovalac");
});

Kada kliknete na stavku sa btnl identifikatorom, dvije poruke će se prikazati uzastopno.
Prvi rukovalac
Drugi rukovalac

Jedan (Tip događaja [, Podaci], Funkcija povratnog poziva) - omogućava vam da dodijelite rukovatelja svim stavkama u kolekciji. Metoda je identična bind (), ali događaj se pokreće samo jednom, nakon čega će se rukovalac automatski ukloniti.
$ ("ibutton"). jedan ("klik", funkcija ()
(upozorenje ("Kliknuli ste na dugme");
});

Nakon prvog klika na dugme, biće prikazana navedena poruka, a nakon drugog klika rukovalac se više neće pozivati.

Trigger (Tip događaja [, Niz podataka]) - poziva rukovaoce za navedeni događaj.
$ (dokument) .bind ("klik", funkcija () (
// Upozorenje rukovatelja ("Onclick događaj");
});
$ (dokument) .trigger ("klik"); // Pozovite rukovaoca

Ako je naveden niz podataka, on će biti proslijeđen funkciji povratnog poziva u rukovatelju. Svaki parametar će odgovarati jednom elementu niza.

$ ("# divl"). bind ("myEvent", funkcija (e, msgl, msg2) (
$ ("# div2"). dodaj ("DogađajmyEvent. "+ msgl +" 11 +
msg2) .dodati ("br");
});
$ ("p"). kliknite (funkcija () (
$ ("# divl"). trigger ("myEvent", ["Message1", "Message2"]);
});

<р>Pritisnite ovdje


Kao rezultat izvršavanja ovog koda, primićemo poruku.
MyEvent. Poruka1 Poruka2

TtiggerHandleg (Tip događaja [, Niz podataka]) - poziva obrađivač za navedeni događaj. Za razliku od metode okidača (), događaj se pokreće samo za prvu stavku u kolekciji. Također, ne događa se zadana radnja kada se koristi metoda tiggerHandleg ().
$ ("obrazac"). bind ("pošalji", funkcija (e, poruka) (
ako (poruka) (
upozorenje ("Obrazac neće biti poslan." + poruka);
}
drugo (
upozorenje ("Obrazac će biti poslan");
});
$ (": dugme"). bind ("klik", funkcija () (
$ ("obrazac"). triggerHandler ("pošalji", ["Naši podaci"]);
});



U ovom primjeru, klik na dugme Rukovatelj poziva pokreće onclick obrađivač događaja. Unutar obrađivača pozivamo događaj onsubmit i prosljeđujemo naše podatke. Na osnovu ovih podataka možemo utvrditi da li je događaj pokrenut kada je kliknuto na dugme Pošalji ili smo ga mi umjetno izazvali. Ako je varijabla msg definirana, tada je događaj pozvan pomoću metode triggerHandler (). U tom slučaju, nakon što se poruka prikaže, podaci obrasca neće biti poslani. Ako kliknete na dugme Pošalji, varijabla msg neće biti definirana, a nakon što se poruka prikaže, podaci obrasca će biti dostavljeni.

Unbind ([Tip događaja [, Naziv funkcije]]) - uklanja rukovaoce događajima za sve elemente kolekcije.
$ ("# btnl"). bind ("klik", funkcija () (
upozorenje ("Kliknuli ste na dugme");
});
$ ("# btnl"). unbind ("klik");
});


Ako navedete ime funkcije u drugom parametru, tada će biti uklonjen samo rukovatelj s tim imenom.

funkcija f__clickl () (
upozorenje ("Funkcija f__clickl ()");
}
funkcija f_click2 () (
upozorenje ("Funkcija f__click2 ()");
}
$ ("# btnl"). bind ("klik", f_clickl); $ ("#btnl")
.bind ("klik", f_click2);
$ ("# btn2"). bind ("klik", funkcija () (
$ ("# btnl"). unbind ("klik", f_click2);
});



Funkcija
f_click1 ()
Funkcija
f_clJck2 ()

Nakon što kliknete na dugme Ukloni, obrađivač događaja sa imenom f_click2 će biti uklonjen. Sada, nakon klika na prvo dugme, dobićemo samo jednu poruku.
F_clJck1 () Funkcija

Ako parametri nisu specificirani, svi rukovaoci će biti uklonjeni.
događaji. $ ("# btnl"). unbind ();

JQuery metode live () i die ().

Dodjeljivanje rukovatelja događajima korištenjem metode bind () ima jedan značajan nedostatak. Ako smo dodijelili rukovaoce, a zatim dodali nove elemente, tada se tim elementima neće dodijeliti rukovatelji događaja.

$ (": dugme"). bind ("klik", funkcija () (
var html = ` `;
$ (ovo) .posle ("
"+ html);

});

U ovom primjeru, za sva dugmad smo dodijelili obrađivač događaja klika. Nakon klika na dugme, dodaje se novo dugme. Ako pokušate da kliknete na njega, neće doći do promjena.

Live () metoda se koristi za dinamičko dodjeljivanje rukovatelja događajima. Ponovimo naš prethodni primjer i koristimo live () metodu umjesto bind ().

$ (": dugme"). uživo ("klik", funkcija () (
var html = ` `;
$ (ovo) .posle ("
"+ html);

});

U tom slučaju, kada kliknete na novo dugme, pojavljuje se drugo dugme. Klikom na ovo dugme kreiraće se još jedno dugme itd.

Bilješka
Live () metoda je dostupna od jQuery 1.3. U starijim verzijama možete koristiti modul Live Query.

Metoda uživo () ima sljedeći format, uživo (vrsta događaja, funkcija povratnog poziva)
U parametru Event Type mogu se navesti sljedeće vrijednosti:
događaji miša: klik, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout;
događaji na tastaturi: dolje, keyprcss, keyup.

Osim toga, možete dodijeliti vlastite događaje koristeći live () metodu. Vaši vlastiti događaji se pozivaju pomoću metoda okidača () i trigger-Handler (). Kreirajmo vlastiti događaj i onda ga nazovimo.

$ ("# divl"). live ("myEvent", funkcija () (
upozorenje ("Upravljanje vlastitim događajem");
});
$ (": dugme"). kliknite (funkcija () (
$ ("# divl"). trigger ("myEvent"); // Podigni događaj
});

Parametar Callback Function je referenca na funkciju u sljedećem formatu.

funkcija Naziv funkcije ([Događaj objekta [, Argumenti]]) (
// ...
}

Element koji je pokrenuo događaj je dostupan unutar funkcije preko pokazivača this. Imajte na umu da se pokazivač this odnosi na element u objektnom modelu dokumenta, a ne na element u kolekciji jQuery. Ako je varijabla navedena u parametru objekta događaja, onda preko nje možete pristupiti svojstvima objekta događaja. U parametru Argumenti možete navesti nekoliko varijabli odvojenih zarezima. Možete proslijediti vrijednosti ovim varijablama koristeći drugi parametar metoda trigger () i triggerHandler ().

$ ("# divl"). bind ("myEvent", funkcija (e, msg) (
upozorenje ("Upravljanje vlastitim događajem." + poruka);
});
$ (": dugme"). kliknite (funkcija () (
$ ("# divl"). trigger ("myEvent", ["Našporuka"]);
});

Možete ukloniti rukovalac događajima koristeći metodu die (). Format metode: die (tip događaja [, naziv funkcije])
Bilješka
Metoda die () je dostupna od jQuery 1.3.

Pogledajmo primjer.

$ ("# btnl"). live ("klik", funkcija ()
(upozorenje ("Kliknuli ste na dugme");
});

$ ("# btnl"). die ("klik"); // Uklanjanje rukovaoca
});

Ako navedete ime funkcije u drugom parametru, tada će biti uklonjen samo rukovatelj s tim imenom.

funkcija f_clickl () (
upozorenje ("Funkcijaf_clickl () ");
}
funkcija f_click2 () (
upozorenje ("Funkcijaf_click2 () ");
$ ("# btnl"). live ("klik", f_clickl);
$ ("# btnl"). live ("klik", f_click2);
$ ("# btn2"). kliknite (funkcija () (
$ ("# btnl"). die ("klik", f_click2);
});

!}
!}

U ovom primjeru, prvom dugmetu smo dodijelili dva obrađivača događaja klika. Ako kliknete na dugme Klikni me, biće prikazane dve poruke.
F_clJck1 () Funkcija
F_clJck2 () Funkcija

Klikom na dugme Ukloni uklanja se rukovalac događaja f_click2. Sada, nakon klika na prvo dugme, dobićemo samo jednu poruku.
F_click1 () funkcija

Bubling događaji u jQueryju

Šta je događaj koji se pojavljuje? Pogledajmo sljedeći primjer (listing 6.6).

Listing 6.6. Bubbling događaji



Float</i><i>događaji</i><i>





Kliknitemiš ovdje




U ovom primjeru smo napisali onclick obrađivač događaja za sve elemente stranice. Pokušajmo ovdje kliknuti lijevom tipkom miša na riječ. Kao rezultat, umjesto jednog događaja, dobijamo čitav niz događaja.
SPAN element
Element P
BODY element
HTML element

Drugim riječima, onclick događaj se sekvencijalno prosljeđuje sljedećem roditeljskom elementu. Za oznaku span, roditeljski element je pasus. Za pasus, roditeljski element je samo tijelo dokumenta, a za tijelo dokumenta, roditeljski element je html oznaka. Ovaj prolazak događaja naziva se bujanje događaja.

Ponekad je potrebno prekinuti bujanje događaja. Da biste to učinili, vratite false unutar funkcije povratnog poziva. Demonstrirajmo ovo na primjeru (listing 6.7).

Listing 6.7. Prekinite bujanje događaja



Prekinite bujanje događaja





Kliknitemiš ovdje




Pokušajmo sada lijevom tipkom miša kliknuti na riječ ovdje. Kao rezultat, umjesto četiri događaja, dobijamo samo jedan.
SPAN element

Pored vraćanja false, možete koristiti stopPropagation () metodu događaja događaja da zaustavite pojavljivanje mjehurića (listing 6.8).

Listing 6.8. Prekidanje bubnjanja metodom stopPropagation ().

stopPropagation ()


Prekidanje bubnjanja metodom</i><br><i>stopPropagation ()





Kliknitemiš ovdje




JQuery zadane radnje i poništavanje

Za mnoge događaje se dodjeljuju zadane akcije, tj. radnje koje web pretraživač preduzima kao odgovor na događaje u dokumentu. Na primjer, kada kliknete na hipervezu, zadana radnja je odlazak na navedeni URL, klikom na dugme Pošalji šaljete podatke obrasca itd.

Ponekad je potrebno prekinuti zadane radnje. Na primjer, kada šaljete podatke obrasca, možete ih potvrditi na očekivani način i, ako ne ispunjavaju navedene zahtjeve, prekinuti podnošenje. Da biste to učinili, vratite false unutar funkcije rukovatelja.

Listing 6.9 pokazuje primjer provjere valjanosti da je adresa e-pošte ispravno unesena u polje E-mail i prekida hiperveze ako se pojavi greška.

Listing 6.9. Prekinite zadane radnje



Prekinite zadane radnje






Email:





Kliknite nazatranzicijaonveza



Osim vraćanja false, možete koristiti prevenDef ault () metodu objekta događaja da poništite zadane akcije (Listing 6.10).

Listing 6.10. Prekidanje događaja metodom preventDefault ().

spriječitiDefault ()


Prekidanje događaja metodom</i><br><i>spriječitiDefault ()






Email:





Kliknite nazatranzicijaonveza



Sve radnje korisnika prilikom interakcije sa aplikacijom svode se na pomeranje miša, pritiskanje tastera miša i pritiskanje tastera na tastaturi. Razmotrite kako aplikacija rukuje događajima povezanim s ovim korisničkim manipulacijama.

Događaji miša Slijed događaja

Delphi komponente definiraju brojne događaje miša. Ovo su događaji:

OnClick Kliknite mišem na komponentu i neke druge radnje korisnika.

OnDblClick Dvaput kliknite na komponentu.

OnMouseDown Pritisnite dugme miša preko komponente. Moguće je prepoznati pritisnuto dugme i koordinate kursora miša

OnMouseMove Pomerite kursor miša preko komponente. Moguće je prepoznati pritisnuto dugme i koordinate kursora miša.

OnMouseUp Otpuštanje prethodno pritisnutog dugmeta miša iznad komponente. Moguće je prepoznati pritisnuto dugme i koordinate kursora miša

OnStartDrag Započinje proces prevlačenja objekta. Moguće je prepoznavanje povučenog objekta.

OnDragOver Pomiče prevučeni objekat preko komponente. Moguće je prepoznati objekt koji se povlači i koordinate kursora miša.

OnDragDrop Otpuštanje prethodno pritisnutog dugmeta miša nakon prevlačenja objekta Moguće je prepoznavanje prevučenog objekta i koordinata kursora miša.

OnEndDrag Drugi događaj se dešava kada se otpusti prethodno pritisnuto dugme miša nakon što je objekat prevučen. Moguće je prepoznati objekt koji se povlači i koordinate kursora miša.

OnEnter Događaj kada element primi fokus kroz manipulaciju mišem, tabeliranje ili programski prijenos fokusa.

OnExit Događaj kada element izgubi fokus kao rezultat manipulacije mišem, tabelarizacije ili mekog fokusa

OnMouseWheel Događaj kada se kotačić miša rotira u bilo kojem smjeru. Od Delphija 5

OnMouseWheelUp Rotirajte točkić miša prema gore. Pojavljuje se kada događaj OnMouseWheel ne obrađuje rotaciju. Od Delphija 5.

OnMouseWheelDown Rotira točkić miša nadole. Pojavljuje se ako događaj OnMouseWheel ne obrađuje rotaciju. Od Delphija 5.

Kao što vidite, ovi događaji pokrivaju svaku zamislivu manipulaciju mišem i čak dupliraju mnoge od njih. Najrašireniji događaj OnClick. Obično se javlja kada korisnik klikne na komponentu, tj. pritisnuli i otpustili dugme miša dok je miš bio iznad komponente. Ali ovaj događaj se također događa tokom nekih drugih radnji korisnika. Nastaje ako:

Korisnik je odabrao stavku u mreži, stablu, listi, padajućoj listi pritiskom na tipku sa strelicom.

Korisnik je pritisnuo razmaknicu dok je dugme ili indikator bio u fokusu.

Korisnik je pritisnuo tipku Enter i aktivni obrazac ima zadano dugme označeno svojstvom Default.

Korisnik je pritisnuo tipku Esc i aktivni obrazac ima dugme za prekid označeno svojstvom Otkaži.

Korisnik je pritisnuo prečice za dugme ili indikator. Na primjer, ako je imovina Caption indikator je napisan kao “& Bold” i simbol “P” je podvučen, a zatim pritiskom na kombinaciju tipki Alt-P od strane korisnika će se pokrenuti događaj OnClick u ovom indikatoru.

Aplikacija instalirana u tačno imovine Provjereno radio dugmad RadioButton.

Aplikacija je promijenila svojstvo Provjereno indikator CheckBox.

Metoda pozvana Kliknite element meni.

Za formu, događaj OnClick nastaje kada korisnik klikne na prazno područje obrasca ili na nedostupnu komponentu.

Obilje događaja povezanih s mišem, kao i stvarno umnožavanje nekih od njih zahtijevaju jasno razumijevanje slijeda pojedinačnih događaja koji se dešavaju jednom ili drugom radnjom korisnika. Hajde da razmotrimo ove sekvence.

U trenutku pokretanja aplikacije, od događaja koje razmatramo, samo se događaj OnEnter javlja u komponenti na koju se prebacuje fokus. Ovaj događaj nije povezan ni sa kakvim radnjama korisnika, tako da se nećemo zadržavati na njemu.

Pogledajmo sada najjednostavniju radnju korisnika: korištenje miša za prebacivanje fokusa s jednog elementa na drugi. Redoslijed događaja u ovom slučaju prikazan je u tabeli. jedan.

Tabela 1. Redoslijed događaja miša prilikom promjene fokusa

Akcija korisnika

Pomerite kursor miša unutar prve komponente

Mnogo OnMouseMove događaja u prvoj komponenti

Pomerite kursor miša unutar obrasca

Mnogo OnMouseMove događaja u formi

Pomerite kursor miša unutar druge komponente

Mnogo OnMouseMove događaja u drugoj komponenti

Klikom miša

OnExit u prvoj komponenti

OnEnter u drugoj komponenti

OnMouseDown u drugoj komponenti

Otpuštanje dugmeta miša

OnClick u drugoj komponenti

OnMouseUp u drugoj komponenti

Događaji OnMouseMove javljaju se konstantno u procesu pomicanja kursora miša, pa čak i samo kada se trese, što je neizbježno ako korisnik ne skida ruke s miša. Ovo se mora uzeti u obzir i ovaj događaj treba koristiti vrlo pažljivo, jer se, za razliku od drugih, dešava mnogo puta.

Kao što možete vidjeti iz gornje tabele, svaka radnja korisnika povezana s pritiskom ili otpuštanjem tipke miša dovodi do niza događaja koji se pojavljuju u nizu. U obrađivačima događaja OnMouseDown i OnMouseUp, možete prepoznati koje je dugme miša pritisnuto i u kojoj tački komponente se trenutno nalazi kursor miša.

Razmatrano u tabeli. 1 niz događaja se odvija ako je u drugoj komponenti svojstvo DragMode jednaka je dmManual (ručni početak procesa prevlačenja i ispuštanja) jer je podešena prema zadanim postavkama. Ako je ova nekretnina dmAutomatic(automatski početak procesa drag-and-drop), tada se svi razmatrani događaji povezani s manipulacijom mišem zamjenjuju sljedećim:

OnMouseDown Zamijenjen sa OnStartDrag

Ako se pritisne dugme i pomeri kursor miša, onda

OnMouseMove Zamijenjeno OnDragOver događajem komponente preko koje se kreće kursor miša

OnMouseUp Zamijenjeno OnDragDrop događajem komponente, preko kojeg je prevlačenje završeno (ako komponenta može prihvatiti informacije iz prevučenog objekta), i naknadnim događajem OnEndDrag komponente koja je prevučena

Događaji OnExit i OnEnter se uopšte ne dešavaju, jer nema promene fokusa. Događaj se takođe ne dešava OnClick.

Ako se, u primjeru prikazanom u Tabeli 1, klikne na objekt koji je u ovom trenutku već u fokusu, tada se događaji ne događaju OnExit i OnEnter. V U ovom slučaju, kada se pritisne dugme, javlja se samo događaj OnMouseDown, a kada se dugme otpusti, događaji OnClick i OnMouseUp.

Pogledajmo sada slijed događaja kada dvaput kliknete na komponentu. To je prikazano u tabeli. 2. Prepoznavanje pritisnutog dugmeta miša i dalje je moguće samo u događajima OnMouseDown i OnMouseUp. Ako trebate prepoznati samo dvostruki klik na određenu tipku miša, onda možete, na primjer, unijeti varijablu koja je oznaka dvostrukog klika, postaviti ovu zastavicu u obrađivač događaja OnDblClick, i u obrađivačima događaja OnMouseDown ili OnMouseUp provjerite ovu zastavicu i, ako je postavljena, obrišite je i izvršite planirane radnje.

Tabela 2. Redoslijed događaja miša pri dvostrukom kliku na komponentu

Akcija korisnika

Prvi klik mišem

OnMouseDown. Moguće je prepoznati pritisnuto dugme i koordinate kursora miša.

Prvo otpuštanje tipke miša

Drugi klik mišem

OnMouseDown. Moguće je prepoznati pritisnuto dugme i koordinate kursora miša.

Drugo otpuštanje tipke miša

OnMouseUp. Moguće je prepoznati pritisnuto dugme i koordinate kursora miša.

Top srodni članci