Sobes.tech
Junior

Qual é a diferença entre event.preventDefault e event.stopPropagation?

sobes.tech IA

Resposta da IA

event.preventDefault() anula a ação padrão do navegador para um evento (por exemplo, navegar ao clicar em <a>), e event.stopPropagation() impede a propagação ou burbulhamento do evento na árvore DOM, evitando que os mesmos manipuladores sejam chamados em elementos pais ou filhos.

Exemplo:

// Suponhamos que haja um link dentro de um div
const link = document.querySelector('a');
const div = document.querySelector('div');

// Manipulador de clique no link
link.addEventListener('click', (event) => {
  alert('Clique no link');
  event.preventDefault(); // Cancela a navegação do link
});

// Manipulador de clique no div
div.addEventListener('click', (event) => {
  alert('Clique no div');
  // Sem event.stopPropagation() este manipulador será chamado após o clique no link
});

Se adicionar event.stopPropagation() ao manipulador do link:

// Manipulador de clique no link com parada da propagação
link.addEventListener('click', (event) => {
  alert('Clique no link');
  event.preventDefault();
  event.stopPropagation(); // Impede a propagação do evento até o div
});

// Manipulador de clique no div
div.addEventListener('click', (event) => {
  alert('Clique no div'); // Este alert não será exibido ao clicar no link
});

Tabela resumida:

Método Ação Impacto no comportamento padrão Impacto na propagação do evento
event.preventDefault() Cancela a ação padrão do navegador Sim Não
event.stopPropagation() Impede a propagação/burbulhamento do evento Não Sim