Junior
Brauzerdə hadisə modeli nədir?
sobes.tech Süni İntellekt
AI-dan cavab
İstifadəçi qarşılıqlı əlaqələrinin (kliklər, giriş, hover) və sistem hadisələrinin (səhifənin yüklənməsi, səhvlər) veb brauzerdə işlənməsi üsulu.
Əsas anlayışlar:
- Hadisə: baş verən hərəkət.
- Hadisə idarəedicisi: Hadisə baş verdikdə icra olunan funksiya.
- Hadisə obyekti (Event object): İdarəediciyə ötürülür və hadisə haqqında məlumatları ehtiva edir (növü, element, koordinatlar və s.).
Standart hadisə axını:
- Yakala (Capturing): Hadisə DOM-un ən yuxarı elementindən (Window, Document) hədəf elementə enir. Bu mərhələdəki idarəedicilər ilk olaraq işə düşür.
- Hədəf mərhələsi (Target phase): Hadisə baş verdiyi hədəf elementə çatır.
- Bubbling (Bubbling mərhələsi): Hadisə hədəf elementindən DOM ağacında yuxarı qalxaraq Window-ə çatır. Bu mərhələdəki idarəedicilər, yakalama və hədəf mərhələsindən sonra işə düşür.
İdarəedicilərin əlavə olunması:
- HTML atributları (
onclick,onload): Köhnə üsul, mürəkkəb tətbiqlər üçün tövsiyə edilmir. - DOM elementlərinin xüsusiyyətləri (
element.onclick): Hər hadisə tipi üçün yalnız bir idarəedicini təyin etmək mümkündür.// Nümunə const button = document.querySelector('button'); button.onclick = function() { alert('Düyməyə basıldı!'); }; addEventListenermetodu: Üstünlük verilən üsul. Bir hadisə üçün bir neçə idarəedicini əlavə etməyə və idarəetmə mərhələsini (yakalama və ya bubblinq) idarə etməyə imkan verir.// Nümunə const button = document.querySelector('button'); button.addEventListener('click', function(event) { console.log('Düyməyə klik!', event); }, false); // false - bubblinq, true - yakalama
removeEventListener metodu idarəediciləri silmək üçün istifadə olunur.
Hadisə nümayəndəliyi: Bir valideyn elementə bir idarəedicini əlavə etmək və uşaq elementlərin hadisələrini idarə etmək. Resursları qənaət edir və dinamik məzmun ilə işləməni sadələşdirir.
// Nümunə nümayəndəlik
const list = document.querySelector('ul');
list.addEventListener('click', function(event) {
if (event.target.tagName === 'LI') {
console.log('Siyahı elementinə klik:', event.target.textContent);
}
});