JavaScript (Română)

În programarea tradițională, aplicațiile sunt executate secvențial de la început până la finalizare pentru a-și produce rezultatele. Cu toate acestea, în prezent, modelul predominant este cel al programării bazate pe evenimente. Scripturile și programele se așteaptă fără a face nici o sarcină până când apare un eveniment. Odată produsă, acestea au o anumită sarcină asociată cu apariția acelui eveniment și când se încheie, scriptul sau programul revine la starea de așteptare.

JavaScript permite script-urilor cu metode de programare: bazate pe secvențiale și eveniment. Evenimentele JavaScript permit interacțiunea dintre aplicațiile JavaScript și utilizatorii. De fiecare dată când apare un buton, apare un eveniment. De fiecare dată când este apăsată o cheie, este produs și un eveniment. Cu toate acestea, pentru ca un eveniment să apară, nu este obligatoriu ca utilizatorul să intervină, deoarece de exemplu, de fiecare dată când o pagină este încărcată, este produsă și un eveniment.

Nivelul de duminică 1 nu include specificațiile legate de Evenimente JavaScript. Nivelul de duminică 2 include anumite aspecte legate de evenimente și DOM Nivelul 3 include specificația completă a evenimentelor JavaScript. Din păcate, specificația DOM Nivelul 3 a fost publicată în 2004, mai mult de zece ani după ce primele browsere au inclus evenimente.

Din acest motiv, multe dintre proprietățile și metodele curente legate de evenimente sunt incompatibile cu cele ale soarelui . De fapt, browsere precum Internet Explorer tratează evenimente după propriul model incompatibil cu standardul.

Modelul simplu de eveniment a fost introdus în versiunea 4 a standardului HTML și este considerată parte a celui mai de bază nivel DOM. Deși caracteristicile sale sunt limitate, este singurul model compatibil cu toate browserele și, prin urmare, singurul care vă permite să creați aplicații care funcționează în același mod în toate browserele.

15.1 Tipuri de evenimente

Fiecare element XHTML are propria listă de posibile evenimente care pot fi atribuite. Același tip de eveniment (de exemplu, făcând clic pe butonul stâng al mouse-ului) poate fi definit pentru mai multe elemente XHTML și același element XHTML poate avea asociații de evenimente diferite.

Numele evenimentelor este construit prin prefixul on, urmat de numele englezesc al acțiunii asociate evenimentului. Astfel, evenimentul pentru a face clic pe un element cu mouse-ul se numește onclick și evenimentul asociat cu mutarea mouse-ului se numește onmousemove.

Tabelul următor rezumă cele mai importante evenimente definite de JavaScript:

onchange

Un element primește focus

iv id = ”

Apăsați un buton de mouse și nu lansați-l

IV id = ” td id =” 82d7ca8c54 „>

div id = „7e66fa8b9a”

Eveniment Descriere Elemente pentru care este definit
iv id = „bfeacb4c29” Un element pierde <button>, <input>, 30d35e9f44 „> , <textarea>,
Un element a fost modificat <input> 30d35e9f44 „> , div id =” EA92971B26 ”
iv id =” ff5c9bb483 ” Apăsați și plasați mouse-ul Toate elementele
ondblclick Apăsați de două ori la rând cu mouse-ul Toate elementele
onfocus <button>, <input>, <label>, <select>, <textarea>, iv id = ” Div id = Apăsați o tastă și nu o eliberați elemente de formular și
Apăsați A Form Elements și onkeyup eliberați o tastă pulsată Form elemente și
iv id = „7101f309b9” Pagina complet încărcată
onmousedown Toate elementele
onmousemove mutați Mouse Toate elementele
onmouseout mouse-ul „frunze” de la Toate elementele
onmouseover mouse-ul „intră” în elemente
div id = „815CFC441C” Eliberați butonul mouse-ului Toate elementele
onreset Inițializați formularul Modificați dimensiunea ferestrei
onselect Selectați un text <input>, <textarea>
onsubmit trimite
onunload Pagina este abandonată, de exemplu atunci când închideți browserul DOR iv id = „b5aee8da8”

Evenimentele cele mai utilizate în aplicațiile web tradiționale sunt onload pentru a aștepta pagina completă pagina, evenimente onclick, iv id = „1137307b14” , onmouseout Pentru a controla mouse-ul și onsubmit pentru controlul expedierii Formulare.

Unele evenimente din tabelul anterior (onclick, onkeydown, onkeypress, onreset div id = „0688b9518c” ) vă permit să evitați „acțiunea implicită” a acelui eveniment. Mai târziu, acest comportament este prezentat în detaliu, care poate fi foarte util în unele tehnici de programare.

acțiuni tipice pe care un utilizator efectuează pe o pagină web poate duce la o succesiune de evenimente. Prin apăsarea de exemplu pe un buton de tip <input type="submit"> evenimente sunt declanșate iv id = „62d35b268b” , iv id = „ff5c9bb483” , onmouseup și onsubmit

15.1.1 Managerii de evenimente

Un eveniment JavaScript de la sine nu are utilitate. Pentru ca evenimentele să fie utile, funcțiile sau codul JavaScript trebuie asociate cu fiecare eveniment. În acest mod, când apare un eveniment, codul indicat este executat, astfel încât aplicația poate răspunde la orice eveniment care apare în timpul executării.

Funcțiile sau codul JavaScript care sunt definite pentru fiecare eveniment pe care îl numesc eveniment Manager (manipulatorii de evenimente în limba engleză) și, pe măsură ce JavaScript este o limbă foarte flexibilă, există mai multe moduri diferite de indicare a manipulatorilor:

    i) ca atribute ale elementelor xHTML.

  • Manipulatori ca functiuni externe JavaScript.
  • „semantic” stivuitoare.

15.1.1.1 Manipulatori, cum ar fi atributele XHTML

Aceasta este metoda cea mai simplă și mai puțin profesională de a indica codul JavaScript care trebuie executat atunci când apare un eveniment. În acest caz, codul este inclus într-un atribut al elementului XHTML în sine. În exemplul următor, doriți să afișați un mesaj atunci când utilizatorul perforați cu mouse-ul pe un buton:

<input type="button" value="Pinchame y verás" onclick="console.log('Gracias por pinchar');" />

în acest sens Metodă, atributele XHTML sunt definite cu același nume ca și evenimentele pe care doriți să le gestioneze. Exemplul anterior dorește doar să controleze evenimentul de înșurubare cu mouse-ul, al cărui nume este onclick. Astfel, elementul XHTML pentru care doriți să definiți acest eveniment trebuie să includeți un atribut numit onclick.

Conținutul atributului este un șir de text pe care îl conține Toate instrucțiunile JavaScript care sunt executate atunci când apare evenimentul. În acest caz, codul JavaScript este foarte simplu (console.log('Gracias por pinchar');), deoarece este vorba numai de afișarea unui mesaj.

În acest exemplu, atunci când utilizatorul faceți clic pe Pe elementul <div> arată un mesaj și când utilizatorul trece mouse-ul peste element, este afișat un alt mesaj:

<div onclick="console.log('Has pinchado con el ratón');" onmouseover="console.log('Acabas de pasar el ratón por encima');"> Puedes pinchar sobre este elemento o simplemente pasar el ratón por encima</div>

Acest alt exemplu include unul dintre cele mai utilizate instrucțiuni din cele mai vechi aplicații JavaScript:

<body onload="console.log('La página se ha cargado completamente');"> ...</body>

Mesajul anterior este afișat după ce pagina este încărcată complet, adică după descărcarea codului HTML, imaginile și orice alt obiect incluse pe pagină.

Evenimentul onload este unul dintre cele mai utilizate de atunci, așa cum se vede în capitolul DOM, funcțiile care permit accesul și manipularea nodurilor DOM copacilor sunt disponibile numai atunci când pagina a fost încărcată complexă Tatic.

15.1.1.2 Managerii de evenimente și variabila Acest

JavaScript definește o variabilă specială numită this care este creat automat și asta este angajează în unele tehnici avansate de programare. La evenimente, puteți utiliza variabila this pentru a vă referi la elementul XHTML care a cauzat evenimentul. Această variabilă este foarte utilă pentru exemple precum următoarele:

Când utilizatorul trece mouse-ul peste <div>, culoarea de margine este arătată negru. Când mouse-ul lasă <div>, marginea este afișată din nou cu culoarea gri deschis originale.

<div style="width:150px; height:60px; border:thin solid silver"> Sección de contenidos...</div>

Dacă variabila nu este utilizată this, codul necesar pentru a modifica culoarea marginilor, ar fi după cum urmează:

<div style="width:150px; height:60px; border:thin solid silver" onmouseover="document.getElementById('contenidos').style.borderColor='black';" onmouseout="document.getElementById('contenidos').style.borderColor='silver';"> Sección de contenidos...</div>

Codul anterior este prea lung și prea predispus la greșeli. În codul unui eveniment, JavaScript creează automat variabila this, care se referă la elementul XHTML care a provocat evenimentul. Astfel, exemplul anterior poate fi rescris după cum urmează:

div> iv id = „72879d52e8”

Codul anterior este mult mai compact, mai ușor de citit și de a scrie și să continuați să lucrați corect chiar dacă valoarea atributului ID al <div>.

15.1.1.3 manageri de evenimente ca funcții externe

Definiția agenților de funcționare a evenimentelor din atributele XHTML este o metodă simplă, dar necompresată pentru a face față evenimentelor JavaScript. Principalul dezavantaj este că este complicat în exces cât de curând se adaugă câteva instrucțiuni, deci este recomandat numai pentru cele mai simple cazuri.

Când codul funcției de manipulare este mai complex, cum ar fi Validarea unui formular, este recomandabil să grupați tot codul JavaScript într-o funcție externă care este invocată din codul XHTML când apare evenimentul.

în acest fel, următorul exemplu:

<input type="button" value="Pinchame y verás" onclick="console.log('Gracias por pinchar');" />

poate fi transformat în:

function muestraMensaje() { console.log('Gracias por pinchar');}

iv id = „bc3dde9b83”

în funcții externe Nu este posibilă utilizarea variabilei this în același mod ca în Stivuitoarele introduse în atributele XHTML. Prin urmare, este necesar să treceți variabila this ca parametru la funcția de manipulare:

function resalta(elemento) { switch(elemento.style.borderColor) { case 'silver': case 'silver silver silver silver': case '#c0c0c0': elemento.style.borderColor = 'black'; break; case 'black': case 'black black black black': case '#000000': elemento.style.borderColor = 'silver'; break; }}

<div style="padding: .2em; width: 150px; height: 60px; border: thin solid silver" onmouseover="resalta(this)" onmouseout="resalta(this)"> Sección de contenidos...</div>

În exemplul anterior, funcția externă este trecută parametrul this, care În cadrul funcției se numește elemento. Prin trecerea this ca parametru, este posibilă accesarea directă a funcției externe la proprietățile elementului care a cauzat evenimentul.

Pe de altă parte, exemplul anterior este complicat de modul în care diferitele browsere stochează valoarea proprietății borderColor. În timp ce magazinele Firefox (în cazul culorii celor patru margini) Valoarea simplă black, Internet Explorer stochează ca black black black black și Opera stochează hexazecimal Reprezentare #000000.

15.1.1.4 Stivuitoare de evenimente semantice

Utilizați atributele XHTML sau funcțiile externe pentru a adăuga managerii de evenimente are un inconvenient grav : „Încorporați” codul XHTML al paginii.

După cum se cunoaște, când se creează pagini web se recomandă separarea conținutului (XHTML) din prezentare (CSS). Pe cât posibil, este recomandat, de asemenea, separarea conținutului (XHTML) de la programare (JavaScript). Se amestecă JavaScript și XHTML complică excesiv codul sursă al paginii, acesta face dificilă întreținerea și reduce semantica documentului final produs.

Din fericire, există o metodă alternativă de a defini agenții de evenimente JavaScript. Această tehnică este de a atribui funcții externe utilizând proprietățile DOM ale elementelor XHTML. Astfel, următorul exemplu:

iv id = „9fbd136b17”
div id = „
<input type="button" value="Pinchame y verás" />

Codul XHTML rezultat este foarte „curat”, deoarece nu se amestecă cu codul JavaScript. Tehnica managerilor semantici constă din:

  1. atribuie un identificator unic la elementul XHTML folosind atributul id.
  2. Creați o funcție JavaScript responsabilă de manipularea evenimentului.
  3. Atribuirea funcției la un anumit eveniment al elementului XHTML folosind DOM.

Un alt avantaj suplimentar al acestei tehnici este că funcțiile externe pot utiliza variabila this sa referit la elementul pe care evenimentul original.

Atribuirea funcției de manipulare utilizând DOM este un proces care necesită o explicație detaliată. În primul rând, obțineți referința elementului la care va fi alocat manipulatorul:

document.getElementById("pinchable");

Apoi, i se atribuie Funcția externă la evenimentul dorit prin intermediul unui element de proprietate cu același nume de eveniment:

div> iv id = „656F3F4657”

În cele din urmă, extern funcţie. După cum sa menționat deja în capitolele anterioare, cel mai important (și cea mai frecventă cauză a erorilor) este aceea de a indica numele funcției, care este, distribuie cu parantezele prin atribuirea funcției:

Dacă parantezele sunt adăugate la sfârșit, funcția este de fapt invocată și atribuirea valorii returnate de funcția la evenimentul onclick Element.

Singurul dezavantaj al acestei metode este că manipulatorul sunt atribuite utilizând funcțiile DOM, care pot fi utilizate numai după ce pagina a fost încărcată complet. În acest mod, astfel încât atribuirea manipulatoarelor nu este eronată, este necesar să se asigure că pagina a fost deja încărcată.

Una dintre cele mai simple modalități de a vă asigura că un anumit cod se va desfășura Fiți executați după aceea că pagina este complet încărcată este de a utiliza evenimentul onload

window.onload = function() { document.getElementById("pinchable").onclick = muestraMensaje;}

Stadiul tehnicii utilizează o funcție anonimă pentru a atribui anumite instrucțiuni evenimentului onload al paginii (în acest caz, acesta a fost setat de obiectul ). În acest mod, pentru a vă asigura că un anumit cod va fi executat după ce pagina a fost încărcată, este necesar doar să o includeți în interiorul următoarei construcții:

window.onload = function() { ...}

15.2 Fluxul evenimentului

În plus față de evenimentele de bază care au fost văzute, browserele includ un mecanism conexat numit flux de evenimente sau „flux de evenimente”. Fluxul de evenimente permite mai multor elemente diferite pentru a răspunde la același eveniment.

Dacă un element <div> cu un buton este definit în interiorul său când utilizatorul face clic pe Butonul, browserul vă permite să atribuiți o funcție de răspuns la buton, o altă funcție de răspuns la <div>, care conține acest lucru și o altă funcție de răspuns la pagina completă. În acest mod, un singur eveniment (pulsarea unui buton) determină răspunsul de trei elemente de pe pagină (inclusiv pagina însăși).

Ordinea pe care evenimentele atribuite fiecărui element sunt executate de la Pagina este ceea ce constituie fluxul de evenimente. În plus, există multe diferențe în fluxul de evenimente din fiecare browser.

15.2.1 Eveniment Bubbling

În acest model de flux de evenimente, ordinea urmată este de la element mai specifice pentru elementul mai puțin specific.

În exemplele următoare se utilizează următoarea pagină HTML:

iv id = „e2685684e1”

Când este apăsat pe text „Faceți clic aici”, care se află în interiorul <div>, următoarele evenimente sunt executate la comanda care arată următoarea schemă:

"Eveniment Bubbling" Schema de operare"event bubbling"

Figura 15.1 „Eveniment Bubbling” Schema de operare

Primul eveniment care este luat în considerare este cel generat de <div> care conține mesajul. Apoi, browserul rulează elementul ascendenților până când ajunge la nivelul superior, care este elementul .

Acest model de flux de evenimente este cel care include Internet Explorer browser. Browserele familiei Mozilla (de exemplu Firefox) suportă, de asemenea, acest model, dar ușor modificat. Exemplul anterior dintr-un browser de familie Mozilla prezintă următorul flux de evenimente:

Eveniment Bubbling "Schema de operare în browserele Mozilla"event bubbling" en los navegadores de Mozilla

Figura 15.2″ Eveniment Bubbling „Schema de operare în browserele Mozilla

Deși obiectul window nu face parte din DOM, fluxul de evenimente implementate de Mozilla călătorește elementul Ascendenții Până la același obiect window, adăugând un eveniment mai mult la modelul Internet Explorer.

15.2 Capturarea evenimentului

în partea cealaltă Modelul, fluxul de evenimente este definit din elementul mai puțin specific la cel mai specific element. Cu alte cuvinte, mecanismul definit este exact opusul „evenimentului Bubbling”. Acest model a fost utilizat de browserul Netscape Navigator Lipsing 4.0.

15.2.3 Evenimente dom

fluxul de evenimente definit în Soarele Specificația acceptă atât bubbling, cât și capturarea, dar „evenimentul capturarea „rulează mai întâi. Cele două fluxuri de evenimente călătoresc toate obiectele DO DOM de la obiectul document la cel mai specific element și invers. În plus, majoritatea browserelor implementează standardele, fluxul continuă până la obiectul window.

Fluxul evenimentului DOM din exemplul anterior este prezentat mai jos:

Schema fluxului de evenimente a modelului DOM

Figura 15.3 Schema de flux de evenimente a modelului DOM

cel mai specific Elementul de flux de evenimente nu este <div> care declanșează execuția evenimentelor, dar nodul de tip TextNode că acesta conține <div>. Faptul de combinare a celor două fluxuri de evenimente determină cel mai specific nod pentru a executa două evenimente consecutiv.

15.3 Manipulatori și ascultători

În secțiunile anterioare Conceptul a fost introdus de la „Handler de evenimente „Sau handler de evenimente, care sunt funcțiile care răspund la evenimentele care apar. În plus, au fost vizualizate trei modalități de definire a calatorilor de evenimente pentru modelul evenimentului de bază:

  1. cod JavaScript într-un atribut al articolului HTML
  2. definiția evenimentului în HTML element în sine, dar manipulatorul este o funcție externă
  3. manipulatori semanici alocați prin Soare fără a fi nevoie să modificați codul HTML al paginii

oricare dintre aceste modele funcționează corect Toate browserele disponibile astăzi. Diferențele dintre browsere apar atunci când mai multe manipulare de evenimente sunt definite pentru același eveniment al unui element. Modul de a atribui și de a „dezastribui” mai multe mânere multiple depinde complet de browserul utilizat.

15.3.1 Stivuitoare de evenimente DOM

Specificația SDI definește două alte metode similare cu cele disponibile pentru Internet Explorer și așa-numitul addEventListener() și removeEventListener()

Diferența principală dintre aceste metode Și cele de mai sus sunt că în acest caz sunt necesare trei parametri: numele „ascultătorului evenimentului”, o referință la funcția responsabilă pentru procesarea evenimentului și tipul de flux de evenimente la care se aplică.

P > Primul argument nu este numele complet al evenimentului așa cum se întâmplă în modelul Internet Explorer, dar trebuie să ștergeți prefixul on. Cu alte cuvinte, dacă pe Internet Explorer, numele onclick va fi acum folosit click.

al treilea parametru este true, manipulatorul este utilizat în faza de captare. Dacă al treilea parametru este false, manipulatorul este asociat cu faza de bubbling.

Apoi, exemplele de mai sus sunt afișate utilizând metodele definite de dom:

function muestraMensaje() { console.log("Has pulsado el ratón");}var elDiv = document.getElementById("div_principal");elDiv.addEventListener("click", muestraMensaje, false); // Más adelante se decide desasociar la función al eventoelDiv.removeEventListener("click", muestraMensaje, false);

prin asocierea multiplă Funcții la un singur eveniment:

function muestraMensaje() { console.log("Has pulsado el ratón");} function muestraOtroMensaje() { console.log("Has pulsado el ratón y por eso se muestran estos mensajes");} var elDiv = document.getElementById("div_principal");elDiv.addEventListener("click", muestraMensaje, true);elDiv.addEventListener("click", muestraOtroMensaje, true);

Dacă o funcție este asociată cu un flux de evenimente dat, această funcție poate fi dezasocată numai în același tip de flux de evenimente. Dacă se consideră următorul exemplu:

div> iv id = „285449fdc9”

Ultima instrucțiune încearcă să disocieze funcția IV ID = „579D908344” În fluxul de evenimente de captare, în timp ce atunci când a fost asociat, a fost indicat fluxul de evenimente de bubbling. Deși executarea cererii nu se oprește și nu apare nicio eroare, ultima instrucțiune nu are niciun efect.

15.4 Evenimentul

Când apare un eveniment, nu este suficient atribuirea unei funcții responsabile pentru procesarea acelui eveniment. În mod normal, funcția care procesează evenimentul necesită informații despre evenimentul produs: cheia care a fost apăsată, poziția mouse-ului, elementul pe care evenimentul a produs, etc.

Obiectul event este mecanismul definit de browsere pentru a oferi toate aceste informații. Este un obiect care este creat automat atunci când apare un eveniment și care este distrus automat când au fost executate toate funcțiile atribuite evenimentului.

Duminica specifică faptul că obiectul event este singurul parametru care trebuie să meargă la funcțiile responsabile pentru procesarea evenimentelor. Prin urmare, în browserele care urmează standardele, obiectul poate fi accesat event prin intermediul argumentelor funcției:

elDiv.onclick = function() { var elEvento = arguments;}

Este de asemenea posibil să se indice în mod explicit argumentul Nume:

elDiv.onclick = function(event) { ...}

Funcționarea browserelor care urmează standardele poate părea „magică”, deoarece în declarația funcției se indică faptul că are un parametru, dar în aplicație nu este transmis niciun parametru în această funcție. De fapt, browserele care urmează standardele creează automat acel parametru și le transmit întotdeauna funcției de manipulare a evenimentului.

15.4.1 Proprietăți și metode

Chiar dacă mecanismul definit de Browsere pentru obiectul event este similar, există numeroase diferențe de îndată ce proprietățile și metodele obiectului.

15.4.1.1 Proprietăți definite de DOM

Tabelul următor colectează proprietățile definite pentru obiectul event în browserele care urmează standardele:

Metoda Metoda

currentTarget elementul care este obiectivul evenimentului

iv id = „4c9ab47bc6”

Indică dacă tasta de presare corespunde unui caracter

Coordonatează X a poziției mouse-ului cu privire la pagina

Elementul care este obiectivul secundar al evenimentului ( legate de evenimentele mouse-ului)

div id = „abd5d590ba” este produs

Descrierea
iv id = „25a25a3701” boolean returnează dacă tasta și false În alt caz
Boolean Indică dacă evenimentul aparține fluxului de evenimente de Bubbling
button întreg numărul butonul mouse-ului care a fost apăsat.Valori posibile: 0 – nici un buton apăsat 1 – butonul a fost apăsat izquierdo 2 – Se ha pulsado el botón derecho 3 – Se pulsan a la vez el botón izquierdo y el derecho 4 – Se ha pulsado el botón central 5 – Se pulsan a la vez el botón izquierdo y el central 6 – Se pulsan a la vez el botón derecho y el central 7` – sunt presate în același timp 3
cancelable Boolean Indică dacă evenimentul poate anula
cancelBubble Boolean Indică dacă fluxul de evenimente de tip Bubbling
a oprit charCode întreg numărul codul unicode al caracterului corespunzător tastei pulsate
clientX Număr complet Coordonate X a poziției mouse-ului față de zona vizibilă a
clientY număr întreg coordonate și poziția de mouse re Schiță a zonei vizibile a
ctrlKey boolean Returns Dacă tasta și false în alt caz
Numărul complet Numărul de ori pe butoanele mouse-ului au fost apăsate
eventPhase Integer Numar Faza la care aparține evenimentul: 0 – Captură de fază 1 – în elementul țintă 2 – fază Bubbling
isChar boolean
keyCode Integer Număr Indică codul numeric al Tasta presată
metaKey Număr complet Returns Dacă tasta și false în alt caz
pageX
pageY coordonate și poziția mouse-ului în raport cu pagina Funcția este utilizată pentru a anula acțiunea predefinită a evenimentului
IV ID = „051A1106A8”
screenX x coordonează Poziția mouse-ului cu privire la ecranul complet
screenY întreg numărul coordonate și poziția mouse-ului cu privire la ecranul complet
shiftKey boolean returnează Dacă tasta și false Într-un alt caz
IV id = „10499C2151” Funcție este utilizat pentru a opri fluxul de evenimente de tip Bubbling
iv id = „011553281E” element elementul care provine evenimentul
timeStamp numărul data și ora în care evenimentul
text String Numele evenimentului

Spre deosebire de ceea ce se întâmplă cu Internet Explorer, majoritatea proprietăților obiectului event al soarelui citind. În mod specific, numai următoarele proprietăți sunt citite și scrie: altKey, button și keyCode.

Tasta este o cheie specială care se află pe unele tastaturi de calculator foarte vechi. În prezent, în calculatoarele PC-ului este asimilată tastei Alt sau tasta Windows, în timp ce pe computerele de tip Mac este asimilată la tasta Command

15.4.2 asemănări și diferențe între browsere

15.4.2.1 similitudini

În ambele cazuri, proprietatea tip este utilizată pentru a obține tipul de eveniment Adică:

94C7669542 „>

În timp ce manipulatorul evenimentului include prefixul on în Numele dvs., tipul de eveniment returnat de proprietate type Distribuie de la acel prefix.De aceea, în exemplul anterior compară valoarea sa cu click și iv id = „AE9623538b” și nu cu onclick și iv id = „1137307b14” .

O altă similitudine este utilizarea proprietății keyCode pentru a obține codul corespunzător caracterului a cheii care a fost apăsată. Tasta pulsată nu reprezintă întotdeauna un caracter alfanumeric. Când apăsați tasta ENTER, de exemplu, codul . Bara spațială corespunde codului 32 și tasta de ștergere are un cod egal cu .

a mai mult Modalitatea imediată de a verifica dacă au fost apăsate câteva taste speciale, este de a utiliza proprietățile shiftKey, 25a25a3701 ” și ctrlKey.

Pentru a obține poziția mouse-ului cu privire la partea vizibilă a ferestrei, sunt utilizate proprietățile clientX și clientY. În același mod, pentru a obține poziția indicatorului mouse-ului în raport cu ecranul complet, proprietățile sunt utilizate screenX și iv id = „186083245a” .

15.4.2.2 Diferențe

Una dintre principalele diferențe este modul în care se obține elementul care provine evenimentul. Dacă un element <div> este atribuit un eveniment onclick, prin apăsarea cu mouse-ul interiorul <div> Un eveniment al cărui obiectiv este originan este elementul <div>

// Internet Explorervar objetivo = elEvento.srcElement; // Navegadores que siguen los estandaresvar objetivo = elEvento.target;

O altă diferență importantă este faptul că se referă la obținerea caracterului corespunzător tastei pulsate. Fiecare tastă pulsată a asociat două coduri diferite: Primul este codul cheii care a fost apăsat și celălalt cod este cel care se referă la caracterul pulsat.

Primul cod este un cod cheie intern Pentru JavaScript. Al doilea cod coincide cu codul de caracter ASCII. În acest fel, litera a are un cod intern egal cu 65 și un cod ASCII de 97 Pe de altă parte, litera A are un cod intern, de asemenea, de 65 și un cod ASCII de 95.

în Internet Explorer, conținutul proprietății keyCode Depinde de fiecare eveniment. În evenimentele „cheie de presă” (onkeyup și onkeydown) Valoarea sa este egală cu codul intern. În „Scrieți cu chei” Evenimente (onkeypress) Valoarea sa este egală cu codul ASCII al caracterului presat.

Dimpotrivă, în navigatorii care urmează Standardele de proprietate keyCode este egal cu codul intern în evenimentele „de presă cheie” (onkeyup și onkeydown) și este egal cu 0 ).

În practică, aceasta presupune că în evenimentele onkeyup puteți utiliza aceeași proprietate în toate browserele:

function manejador(elEvento) { var evento = elEvento || window.event; console.log(" El código de la tecla pulsada es " + evento.keyCode);}document.onkeyup = manejador;document.onkeydown = manejador;

în acest caz, dacă pagina este încărcată în orice browser și apăsată, de exemplu, tasta A, următorul mesaj:

Mesaj afișat în Browserul Firefox

Figura 15.4 Mesaj afișat în browserul Firefox

Diferența mare are loc E Când încercați să obțineți caracterul care a fost apăsat, în acest caz litera a. Pentru a obține scrisoarea, trebuie mai întâi să obțineți codul ASCII. După cum sa discutat, în Internet explorează valoarea proprietății keyCode în eventual onkeypress este egal cu caracterul ASCII:

function manejador() { var evento = window.event;

div id = „

în browsere care nu sunt Internet Explorer, Codul precedent este egal cu 0 pentru orice pulsat cheie. În aceste browsere, în conformitate cu standardele, proprietatea ar trebui să fie utilizată charCode, care returnează codul tastei pulsate, dar numai pentru evenimentul onkeypress

iv id = „3282f09b96”
iv id = „

Odată obținut Codul în fiecare browser, funcția trebuie utilizată String.fromCharCode() pentru a obține caracterul a cărui cod ASCII este trecut ca parametru. Prin urmare, soluția completă pentru obținerea cheii pulsate în orice browser este după cum urmează:

function manejador(elEvento) { var evento = elEvento || window.event; var codigo = evento.charCode || evento.keyCode; var caracter = String.fromCharCode(codigo);} document.onkeypress = manejador;

Una dintre cele mai interesante proprietăți este posibilitatea de a preveni finalizarea comportamentului normal al unui eveniment.Cu alte cuvinte, cu JavaScript este posibil să nu arătați niciun caracter atunci când este apăsată o cheie, nu trimiteți un formular după apăsarea butonului de expediere, nu încărcați nicio pagină apăsând un link etc. Metoda avansată de prevenire a unui eveniment de la funcționarea acțiunii asociate depinde de fiecare browser:

iv id = „d9c96191eb”

în modelul de bază al evenimentului prea este posibilă pentru a preveni comportamentul implicit al unor evenimente. Dacă, de exemplu, într-un element <textarea> Următorul manipulator de evenimente este indicat:

<textarea onkeypress="return false;"></textarea>

În <textarea> anterioare nu va fi posibilă scrierea de caractere, deoarece manipulatorul evenimentului returnează false și aceasta este valoarea necesară pentru prevenirea Capetele de funcționare a evenimentului și, prin urmare, pentru a împiedica scrisoarea de la a fi scrisă.

Deci, este posibil să se definească mânerele de eveniment care returnează id = „493C597F59”> în funcție de unii parametri. De exemplu, un număr de caractere care pot fi scrise pot fi proiectate într-o <textarea>

<textarea onkeypress="return limita(100);"></textarea>

Funcționarea exemplului anterior este detaliată mai jos:

  1. evenimentul onkeypress pentru a controla dacă cheia este scrisă sau nu.
  2. Valoarea returnată este returnată de funcția externă limita() la care valoarea Este trecut valoarea 100.
  3. Dacă valoarea returnată de limita() este , evenimentul are loc în mod normal, iar caracterul este scris în <textarea>. Dacă valoarea returnată de limita() este false, evenimentul nu apare și, prin urmare, caracterul nu este scris în <textarea> > După verificare dacă numărul de caractere din <textarea> este mai mare sau mai mic decât numărul maxim de caractere care sa întâmplat ca parametru.

Obiectul event vă permite, de asemenea, să opriți complet execuția fluxului normal de evenimente:

// Navegadores que siguen los estandareselEvento.stopPropagation();

Prin oprirea fluxului de evenimente în așteptare, evenimentele care rămân din acel moment sunt supraidate până când toate elementele în așteptare sunt rulate până la elementul IV id = „6771ede959” .

15.5 Tipuri de evenimente

Lista completă a evenimentelor care pot fi generate într-un browser poate fi împărțită în patru mari g Rupees Specificația DOM definește următoarele grupe:

  • Evenimente de mouse: ele provin când utilizatorul utilizează mouse-ul pentru a efectua unele acțiuni.
  • Evenimente de tastatură: ele provin când utilizatorul presează Orice tastă de pe tastatura sa.
  • HTML Evenimente: ele provin atunci când apar modificări în fereastra browserului sau când apar anumite interacțiuni între client și server O schimbare apare în structura DOM a paginii. Ele sunt, de asemenea, numite „evenimente de mutație”.

15.5.1 Evenimente de șoarece

Evenimente de șoarece sunt, cu multă diferență, cei mai mulți angajați din aplicații web. Evenimentele care sunt incluse în această clasificare sunt următoarele:

iv id = „A7565c1a49”

iv id = „7a36d31Acf”

este apăsat de două ori

element

Toate elementele de la pagini suportă evenimentele din tabelul anterior.

15.5.1.1 Proprietăți

Obiectul evenimentului conține următoarele proprietăți pentru evenimentele mouse-ului:

  • Coordonatele mouse-ului (toate coordonatele diferite legate de elemente diferite)
  • Proprietatea type
  • Proprietatea srcElement (Internet Explorer) sau target (dom)
  • , ctrlKey, altKey și metaKey (DOM>
  • Proprietatea button (numai în evenimente mousedown, mousemove 61e41b1d26 „> , mouseover și IV id = „A4CA7FE2A3” )

Evenimente mouseover și mouseout au proprietăți suplimentare. Internet Explorer definește proprietatea fromElement, care se referă la elementul din care indicatorul mouse-ului a fost mutat și toElement Acesta este elementul la care indicatorul mouse-ului sa mutat. În acest fel, în cadrul evenimentului mouseover, proprietatea toElement este identic cu iv id = „C9A858F7B5” și În cadrul evenimentului mouseout, proprietatea fromElement este identic cu srcElement.

În browserele care acceptă standardul DOM, există o singură proprietate numită relatedTarget. În cazul mouseout, relatedTarget Puncte la elementul la care mouse-ul sa mutat. În cazul iv id = „AE9623538B” , 051A1106A8 „> Puncte la elementul din care a fost mutat indicatorul mouse-ului.

când a Butonul mouse-ului este apăsat, secvența evenimentelor care apare este după cum urmează: mousedown, mouseup Prin urmare, secvența evenimentelor necesare pentru a ajunge la dublu clic devine la fel de complexă ca și următoarele: mousedown, mouseup, click, mousedown, mouseup 6C45DA3D8B”> , dblclick.

15.5.2 Evenimente de tastatură

Evenimentele care sunt incluse în această clasificare sunt următoarele:

eveniment Descriere
div id = „6C45DA3D8B”> apare atunci când butonul stâng al mouse-ului este apăsat.De asemenea, apare atunci când focalizarea aplicației este localizată pe un buton și apăsați pe ENTER
dblclick apare atunci când butonul stâng al mouse-ului
mousedown apare atunci când orice buton al mouse-ului este apăsat
mouseout apare atunci când indicatorul mouse-ului se află în interiorul unui element și utilizatorul mișcă indicatorul într-un loc din acel element
iv id = „AE9623538B” apare atunci când indicatorul mouse-ului este în afara unui element și utilizatorul deplasează indicatorul într-un loc în interiorul
mouseup Apare atunci când este eliberat orice buton al mouse-ului care a fost apăsat
mousemove apare atunci când Punterul sau mouse-ul este pe un element
Descriere

Caracterul (țesăturile nu sunt luate în considerare ca SHIFT, ALT etc.). De asemenea, se produce în mod continuu dacă este produsă când acesta este eliberat atunci când acesta este lansat orice cheie pulsată TD de tip „/ td) > div id = „7e66fa8b9a”>

15.5.2.1 Proprietăți

Obiectul evenimentului conține următoarele proprietăți pentru evenimente de tastatură:

  • Proprietatea keyCode
  • Proprietatea charCode (numai la soare)
  • Proprietatea srcElement (Internet Explorer) sau target (dom)
  • ” 865c7bc56c „> , ctrlKey, iv id =” 25a25A3701 ” și metaKey (numai la soare)

Când o tastă este apăsată la un caracter alfanumeric, acesta are loc următoarea secvență de Evenimente: , keypress, keyup. Când este apăsat un alt tip de tastă, apare următoarea secvență: , keyup. Dacă cheia este ținută, în primul caz, evenimentele sunt repetate continuu keypress și în al doilea caz, repetați evenimentul continuu.

15.5.3 Evenimente HTML

Evenimentele HTML definite sunt colectate în tabelul următor:

iv id =” 664F11230E ” pe tastatură. De asemenea, apare continuu dacă este produs atunci când este tras o tastă corespunzătoare unui alfanumeric de la un alfanumeric al alfanumericului
div id id = „b91381A667”

este încărcat tr id = „e0b9e62”>

] td id = „7a2eb8d9ea”

fb2bd1e386 „>

Focus 7E66FA8B9A „>

bb5c529da „>
apare în obiectul ferestrei când pagina este complet încărcat. În elementul <img> cuando se carga por completo la imagen. En el elemento` atunci când obiectul
Apare în obiectul ferestrei când pagina dispare complet (atunci când închideți fereastra browserului). În elementul <object> când obiectul dispare.
abort apare într-un element <object> când utilizatorul oprește descărcarea elementului înainte de a fi terminat
error apare în obiectul ferestrei când apare o eroare JavaScript. În elementul <img> când imaginea nu a putut fi încărcată complet și în <object> când elementul nu se încarcă corect
select apare atunci când sunt selectate mai multe caractere dintr-o casetă de text (<input> și iv id = „EA92971B26
IV ID =” 040C0DBF2E ” Are loc Când o casetă de text (<input> și <textarea>) pierd focalizarea și conținutul său a variat. De asemenea, apare când valoarea unui element <select>
apare atunci când apăsați Pe un buton de resetare (<input type="reset">) apare în obiectul ferestrei când fereastra Navigator este redimensionată
scroll apare în orice element care are un bară de defilare, când utilizatorul o folosește. Elementul <body> conține bara de defilare a paginii complete
focus apare în orice element (inclusiv obiectul ferestrei) atunci când elementul primește
apare în orice element (inclusiv obiectul ferestrei) atunci când elementul pierde

Una dintre cele mai utilizate evenimente este evenimentul load, deoarece toate manipulările care sunt efectuate de DOM necesită ca pagina să fie încărcată integral și, prin urmare, copacul DOM a fost complet Construit > care pot fi folosite împreună cu evenimentul scroll.

15.5.4 Evenimente Sun

Deși evenimentele de acest tip fac parte din Specificația oficială a Sun, nu au fost încă implementate în toate browserele.Următorul tabel colectează cele mai importante evenimente de acest tip:

iv id = „A7565C1A49”

iv id = „7a36d31Acf”

/td>

Exercitiul 17

Vizualizare instruction

Exercițiul 18

Vizualizare instrucțiune

Exercițiul 19

Vizualizare enunță

eveniment Descriere
div id = „4CDEE0C8EA”> apare atunci când nodurile sunt adăugate sau șterse în subregele unui document sau
DOMNodeInserted apare atunci când un nod este adăugat ca un copil de la un alt nod
DOMNodeRemoved apare atunci când un nod este șters care este copilul de la un alt nod
DOMNodeRemovedFromDocument apare atunci când un nod este șters
DOMNodeInsertedIntoDocument apare atunci când un nod este adăugat la document

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *