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. 😉