JavaScript – Inregistrare Detectare Evenimente 8

Evenimentele sunt actiuni efectuate de utilizator in pagina web.
De exemplu, click-ul sau pozitionarea cursorului pe un element, scrierea intr-o caseta text input, sau derularea paginii, sunt evenimente efectuate de utilizator.
Pentru a putea executa un anumit cod JS cand un eveniment e declansat, JavaScript contine asa numitele „event handlers” (manipulatoare de evenimente), precum: onclick, onmouseover, onkeypress, onscroll, etc.

Inregistrare event handlers

Metoda veche de a executa anumite instructiuni, sau o functie cand un eveniment e declansat, e prin adaugarea acestuia in tag-ul HTML in care evenimentul trebuie detectat.
De exemplu, cand un utilizator apasa click pe acest link, „onclick” detecteaza aceasta actiune si apeleaza functia oFunctie():

<a href=”#” onclick=”oFunctie();” title=”Text”>Link</a>


• Se pot inregistra „event handlers” fara a-le adauga in tag-ul HTML.
Cea mai buna metoda de inregistrare de detectare a evenimentelor, care e cross–browser (recunoscuta in toate principalele navigatoare web), este cu aceasta sintaxa:

element.event_handler = oFunctie;

element reprezinta elementul ce declanseaza evenimentul respectiv (event_handler), care va executa functia oFunctie.
– Observati ca la inregistrarea evenimentului nu se folosesc parantezele () la numele functiei accesate.

Exemplu, la click pe un anumit DIV, e afisata o fereastra Alert:

<div id="dvid" style="width:100px; background:#a8eda9; cursor:pointer;">Click here</div>
<script type="text/javascript"><!--
var elm = document.getElementById('dvid');         // preia elementul
// functie executata cand se produce evenimentul
function oFunctie() {
  alert('Eveniment click detectat');
}
// inregistrare event handler onclick
elm.onclick = oFunctie;
--></script>

Demo:

Click aici

Event handler si functie anonima

Functia apelata la declansarea evenimentului poate fi creata direct in expresia de inregistrare a event handler-ului.
Sintaxa:

element.event_handler = function() { // codul ce va fi executat };

Exemplu:

<div id="dvid" style="width:100px; background:#a8eda9; cursor:pointer;">Click aici</div>
<script type="text/javascript"><!--
var elm = document.getElementById('dvid');         // preia elementul
// inregistrare event handler onclick
elm.onclick = function() {
  alert('Detectare click - functie anonima');
};
--></script>

Demo:

Click aici


• Pentru a sterge detectarea evenimentului, i-se atribuie valoarea null :

element.event_handler = null;

– Exemplu. Cand utilizatorul plaseaza cursorul peste DIV-ul cu id=”dvid”, se afiseaza o fereastra Alert, apoi se sterge detectarea „onmouseover” la acel element, astfel, cand utilizatorul muta a doua oara cursorul peste acel DIV nu se intampla nimic.

<div id="dvid" style="width:100px; background:#a8eda9;">Mutati cursorul aici.</div>
<script type="text/javascript"><!--
var elm = document.getElementById('dvid');         // preia elementul
// inregistrare event handler onmouseover
elm.onmouseover = function() {
  alert('Plasati inca o data cursorul pe acel text');
  elm.onmouseover = null;            // sterge inregistrarea
};
--></script>

Demo:

Mutati cursorul aici.

Cuvantul this

In JavaScript, cuvantul this (acesta) reprezinta mereu „proprietarul” functiei. In cazul evenimentelor, this reprezinta elementul HTML care declanseaza evenimentul.

– Exemplu. La click pe tag-ul cu id=”dvid”, JavaScript preia continutul din el, il afiseaza intr-o fereastra Alert, apoi ii modifica culoarea background.

<div id="dvid" style="width:125px; background:#a8eda9; cursor:pointer;">Exemplu cu this</div>
<script type="text/javascript"><!--
var elm = document.getElementById('dvid');         // preia elementul
// inregistrare event handler onclick
elm.onclick = function() {
  // preia continutul HTML din elementul curent (cel ce declanseaza evenimentul)
  var elm_cnt = this.innerHTML;
  alert(elm_cnt);        // alert acel continut
  // setare culoare background la elementul curent
  this.style.background = 'blue';
};
--></script>

Demo (click pe textul urmator):

Exemplu cu this

Inregistrare si Detectare eveniment cu addEventListener()

Exista inca un mod de inregistrare pt. detectarea evenimentelor in pagina web, si anume cu metoda addEventListener().
Sintaxa:

element.addEventListener('event', oFunctie, use_capture);

event – e un sir cu tipul de eveniment ce trebuie detectat, fara prefixul „on” („click”, „mouseover”, „mouseout”, …).
oFunctie – o functie accesata cand „event” e declansat.
use_capture – (optional) o valoare booleana (true sau false). Determina daca evenimentul trebuie executat in faza de capturare sau in faza de „bubbling”. Daca nu stiti sigur ca trebuie intr-o faza anume, folositi false (bubbling).
Aceasta metoda nu e suportata de toate navigatoarele web principale, astfel ca e mai bine sa folositi modul traditional, prezentat mai sus.

– Exemplu. Cand mouse-ul e deasupra unui element LI, capata o culoare de fundal verde, cand cursor-ul iese din zona acelui <li> se elimina culoarea de fundal.

<ul>
 <li>WebDevelopment - www.coursesweb.net</li>
 <li>Cursuri gratuite - www.discant.net</li>
 <li>Manual PHP - www.php.net</li>
</ul>
<script type="text/javascript"><!--
var elm_li = document.getElementsByTagName('li');         // preia toate tag-urile <li>
// functie executata la mouseover
function over() {
  // seteaza o culoare de fundal la elementul curent
  this.style.background = '#07da08';
}
// functie executata la mouseout
function out() {
  // sterge culoarea de fundal a elementului curent
  this.style.background = 'none';
}
// parcurge obiectul cu elementele LI
for(var i=0; i<elm_li.length; i++) {
  // inregistrare mouseover si mouseout la fiecare LI
  elm_li[i].addEventListener('mouseover', over, true);
  elm_li[i].addEventListener('mouseout', out, false);
}
--></script>

Demo (miscati cursorul pe lista de jos):

  • WebDevelopment – www.coursesweb.net
  • Cursuri gratuite – www.discant.net
  • Manual PHP – www.php.net


• Pentru a sterge inregistrarea de detectare a unui eveniment cu addEventListener(), se foloseste metoda removeEventListener():

element.removeEventListener('event', oFunctie, false);

Similar Posts

  • Creare scripturi avansate – Javascript si PHP 15

    Codul PHP este executat pe server iar datele de iesire sunt transmise la navigatorul web.Codul scriptului JavaScript este executat de browser pe calculatorul utilizatorului.Combinand aceste doua limbaje de programare web, se pot obtine scripturi JavaScript dinamice, cu rezultate in functie de datele primite si procesate de server. Astfel, aceeasi pagina de site poate contine un…

  • createElement si insertBefore 14

    createElement() si insertBefore() sunt doua functii (metode) JavaScript care sunt folosite pentru a adauga elemente noi in pagina, care sunt create dinamic cu JavaScript. De obicei aceste functii sunt folosite impreuna. 1. createElement(„tag”) Creaza obiectul elementului specificat la parametrul „tag”.Sintaxa generala este urmatoarea: – Unde „tag” este denumirea (selectorul) elementului HTML care se doreste sa…

  • Lucrul cu getElementsByTagName 13

    getElementsByTagName() este o functie, sau metoda JavaScript care obtine si face referire la toate elementele HTML a caror eticheta este spoecificata ca parametru intre paranteze. De exemplu:                document.getElementsByTagName(‘div’)– face referire la toate tag-urile DIV din documentul HTML.Aceasta functie stocheaza elementele pe care le-a obtinut intr-un obiect de tip…

  • Lucrul cu getElementById 12

    ID-ul este un atribut care poate fi adaugat in etichetele (sau tag-urile) HTML. Prin valoarea data acestui atribut se atribuie un nume unic etichetei respective. Acest „id” poate fi folosit in stilurile CSS pentru a defini aspectul grafic si aranjarea in pagina a tag-ului respectiv, dar poate fi folosit si in scripturi JavaScript pentru a…

  • Obiectul window – 1 11

    Ferestrele sunt cele mai importante elemente de interfata in browser, iar JavaScript ofera multe modalitati de a le manipula.In acesta lectie veti invata despre obiectul window, proprietatile si metodele acestuia, cum sa creati noi ferestre (pop-up) si sa le inchideti. 1. Proprietatile si metodele obiectului window Un browser (indiferent de nume sau producator) este prezentat…

  • Obiectul Form – 1 10

    Formularele sunt elemente HTML care dau viata unor pagini statice deoarece asigura o interfata prin care vizitatorii pot interactiona, cu ajutorul controalelor (elemente ale formularului).Obiectul Form este mijlocul prin care se poate interactiona cu acest element HTML in scripturile JavaScript. 1. Metode si proprietati ale obiectului form Dupa cum ati invatat in lectiile precedente, obiectele…

Lasă un răspuns

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