.
sunt aceleași procesoare ca înainte, dar de data aceasta - de la scufundare etapă. Pentru a vedea interceptarea în acțiune, faceți clic pe elementul în ea
:
Ar trebui să fie FORMULAR → DIV → P → P → DIV → FORMULAR. Rețineți că elementul
implicate în ambele etape.
După cum se poate observa din exemplul, același procesor poate fi atribuit diferitelor etape. În acest caz, număr de stadiul actual, dacă este necesar, pot fi obținute din proprietățile event.eventPhase (= 1 dacă hidrotermic 3, în cazul în ascensiune).
Pentru a face mai ușor de navigat, am adunat IE8- diferențele care sunt legate de ascensiunea într-o singură secțiune.
Cunoștințele lor vor fi necesare în cazul în care vă decideți să scrie pe JS pură, fără cadru, și ai nevoie de sprijin IE8-.
Nu există proprietăți event.currentTarget
Rețineți că, atunci când atribuirea unui handler prin onsvoystvo avem acest lucru. asa event.currentTarget. De regulă, nu este necesar, dar numirea prin handler attachEvent nu obține acest lucru. astfel încât elementul curent, dacă este necesar, poate fi luată numai de la închidere.
În schimb event.target în IE8- utilizate event.srcElement
Dacă vom scrie un handler care va sprijini și IE8- și browserele moderne, puteți începe după cum urmează:
Pentru a opri ascensiunea folosit codul event.cancelBubble = true.
Cross-browser pentru a opri ascensiunea, puteți:
Mai târziu, în tutorial, vom folosi proprietățile și provocările standard, deoarece adăugarea acestor linii pentru a asigura compatibilitatea - o sarcină destul de simplu și evident. În plus, nimeni nu deranjează să se conecteze polifill.
Încă o dată, aș dori să rețineți - aceste diferențe trebuie să știe atunci când scrieți JS-code-ului IE8- fără cadre. Aproape toate JS-cadre oferă cross-browser de sprijin pentru a viza. currentTarget și stopPropagation ().
- Atunci când are loc un eveniment - elementul pe care a fost marcat ca „țintă» (event.target).
- Urmatorul eveniment este deplasat mai întâi în jos din rădăcina documentului la event.target. de-a lungul drum care cauzează handlerele puse prin addEventListener (. adevărat).
- În continuare, evenimentul se mută de la event.target până la rădăcina documentului, calea care cauzează handlerele puse prin * și pe addEventListener (. Fals).
Fiecare procesor are acces la proprietăți de evenimente:
- event.target - cel mai adânc element pentru care a avut loc evenimentul.
- event.currentTarget (= aceasta) - element care, la momentul handler sarcinii (la care "înota" eveniment).
- event.eventPhase - în ce fază a mers (= 1 scufundare, urca = 3).
Orice procesor poate opri evenimentul prin apelarea event.stopPropagation (). dar acest lucru nu este recomandat, deoarece, în viitor, acest eveniment ar putea avea nevoie de, uneori lucrurile cele mai neașteptate.
În stadiul actual de dezvoltare a imersiune este folosit foarte rar.
Există două motive:
Istoric - din moment ce versiunea IE 9 acceptă numai pe deplin standardul actual.
Rezonabil - atunci când are loc un eveniment, este rezonabil să se permită primului operator la elementul de lucru, deoarece acesta este cel mai specific. Codul care este plasat pe elementul de procesor, știe maxim de detalii cu privire la ce fel de element de ceea ce făcea.
În plus, este logic să transfere procesarea evenimentului către părinte - el înțelege, de asemenea, ceea ce se întâmplă, dar în mai puține detalii, etc - de mai sus, și așa mai departe, până la documentului. procesor care implementează funcționalitatea cel mai frecvent la nivel de document.