Prevenindo o comportamento padrão: não deixar o navegador fazer o que ele faria normalmente
Aprenda a controlar ações padrão do navegador, como o envio de um formulário.
Em muitos elementos da página, o navegador já vem com um comportamento “automático”.
Exemplos:
- um link
<a>abre outra página - um formulário
<form>recarrega/enviar a página ao clicar em “Enviar” - clique direito abre menu de contexto
Às vezes isso é ótimo.
Mas em outros casos, você quer controlar isso com JavaScript.
É aí que entra o preventDefault().
O que é preventDefault()?
preventDefault() é um método do objeto Event que impede a ação padrão do navegador para aquele evento.
Analogia simples:
o navegador está prestes a “agir no piloto automático”, e você diz:
“calma, dessa vez eu vou decidir o que acontece”.
Exemplo 1: formulário sem recarregar a página
Comportamento padrão de submit: recarregar/enviar a página.
<form id="formLogin">
<input type="text" placeholder="Usuário">
<button type="submit">Entrar</button>
</form>
<p id="status"></p>
const formLogin = document.getElementById("formLogin");
const status = document.getElementById("status");
formLogin.addEventListener("submit", function (e) {
e.preventDefault(); // impede o envio padrão
status.textContent = "Formulário validado com JavaScript!";
});
Aqui, o formulário não recarrega a página.
Você ganha tempo para validar campos, mostrar mensagens e só depois decidir o que fazer.
Exemplo 2: impedir navegação de link
<a id="meuLink" href="https://example.com">Ir para site</a>
<p id="msg"></p>
const meuLink = document.getElementById("meuLink");
const msg = document.getElementById("msg");
meuLink.addEventListener("click", function (e) {
e.preventDefault(); // impede abrir o link
msg.textContent = "Navegação bloqueada para confirmação.";
});
Muito útil quando você quer confirmar ação antes de sair da página.
Quando usar preventDefault()?
Use quando você precisa de controle antes da ação padrão, por exemplo:
- validar formulário antes de enviar
- confirmar clique em link externo
- bloquear ações temporariamente
- criar experiência customizada
Quando não usar em excesso?
Se você bloquear tudo sem necessidade, a página pode ficar estranha para o usuário.
Use com propósito claro.
Boa prática:
- aplique somente onde faz sentido
- mostre feedback ao usuário (mensagem, alerta visual)
- mantenha navegação previsível
Diferença rápida: preventDefault() x stopPropagation()
preventDefault()→ impede a ação padrão do navegador.stopPropagation()→ impede o evento de “subir” para elementos pais.
São coisas diferentes, mas podem aparecer juntas em alguns cenários.
Resumo da lição
- Alguns elementos têm ações padrão no navegador.
e.preventDefault()impede essa ação automática.- Casos clássicos:
submitde formulário e clique em link. - Use com equilíbrio para manter boa experiência do usuário.
- Essa técnica é essencial para interfaces mais controladas e inteligentes.