Sobes.tech
Junior

Care este diferența dintre event.preventDefault și event.stopPropagation?

sobes.tech AI

Răspuns de la AI

event.preventDefault() anulează acțiunea implicită a browserului pentru un eveniment (de exemplu, navigarea la clic pe <a>), iar event.stopPropagation() oprește propagarea sau bubbling-ul evenimentului în arborele DOM, evitând apelarea aceluiași handler pe elementele părinte sau copil.

Exemplu:

// Presupunem că există un link în interiorul unui div
const link = document.querySelector('a');
const div = document.querySelector('div');

// Handler pentru clic pe link
link.addEventListener('click', (event) => {
  alert('Clic pe link');
  event.preventDefault(); // Anulează navigarea
});

// Handler pentru clic pe div
div.addEventListener('click', (event) => {
  alert('Clic pe div');
  // Fără event.stopPropagation() acest handler va fi apelat după clic pe link
});

Dacă se adaugă event.stopPropagation() la handler-ul link-ului:

// Handler pentru clic pe link cu oprirea propagării
link.addEventListener('click', (event) => {
  alert('Clic pe link');
  event.preventDefault();
  event.stopPropagation(); // Oprește propagarea evenimentului către div
});

// Handler pentru clic pe div
div.addEventListener('click', (event) => {
  alert('Clic pe div'); // Acest alert nu va fi afișat la clic pe link
});

Tabel sumar:

Metodă Acțiune Impact asupra comportamentului implicit Impact asupra propagării evenimentului
event.preventDefault() Anulează acțiunea implicită a browserului Da Nu
event.stopPropagation() Oprește propagarea/bubbling-ul evenimentului Nu Da