qual a diferença entre os métodos preventDefault() e stopPropagation() no JavaScript?

Sem enrolação: ambos os métodos são usados para controlar o comportamento de eventos em JavaScript, especialmente em situações como o clique de um botão.

preventDefault():

  • Uso: cancela a ação padrão que o navegador executaria para esse evento.
  • Exemplo: em um formulário, ao clicar em “Enviar”, o navegador normalmente recarregaria a página. Usando event.preventDefault(), podemos impedir esse comportamento.
  • Uso típico: formulários, links (<a>), submissão de dados, etc.
form.addEventListener('submit', function(event) {
  event.preventDefault(); // Impede o envio do formulário
});

stopPropagation():

  • Uso: impede que o evento continue “subindo” (propagando) pela árvore de elementos do DOM.
  • Exemplo: se você tem um botão dentro de uma ‎<div>, e ambos têm um event listener de clique, ao clicar no botão, o evento normalmente também acionaria o listener da ‎<div>. Usando ‎event.stopPropagation(), impedimos que o evento chegue a <div>.
  • Uso típico: quando você quer que apenas o elemento clicado reaja ao evento, sem afetar elementos pais.
btn.addEventListener('click', function(event) {
  event.stopPropagation(); // Não será "enxergado" pelo elemento pai
});

Resumo:

  • preventDefault() bloqueia a ação padrão do navegador para aquele evento.
  • stopPropagation() bloqueia a propagação do evento para elementos pais.

E você ainda pode usar ambos juntos, dependendo do que deseja controlar no seu código. 😉