DomJS Logo DomJS Contacte-nos
Menu
Contacte-nos

Eventos: Como Responder às Ações do Utilizador

Clicks, submissões de formulários, scrolls — descobre como capturar estas ações e fazer algo com elas. É mais simples do que parece.

9 min leitura Iniciante Março 2026
Ecrã mostrando eventos de clique e interações do utilizador num navegador web

O Que São Eventos?

Quando um utilizador interage com o teu site — clica num botão, preenche um campo, faz scroll — o navegador regista isso como um evento. JavaScript permite-te “escutar” estes eventos e reagir a eles.

Pensa em eventos como conversas. O utilizador fala (clica, escreve, move o rato) e o teu código responde. Sem eventos, o teu site seria apenas uma página estática. Com eles, cria-se experiência real e interativa.

O melhor? Não é complicado. Com poucas linhas de código consegues transformar o comportamento do teu site. Vamos lá ver como funciona.

Programador a escrever código JavaScript para manipular eventos do utilizador

Os Tipos de Eventos Mais Comuns

Existem dezenas de eventos que podes usar. Mas a verdade é que a maioria dos projetos usa sempre os mesmos. Conhece estes e já resolveste 80% dos casos.

Click

O clássico. Dispara quando alguém clica num elemento. Usado em botões, links, qualquer coisa que reage ao clique.

Submit

Específico de formulários. Dispara quando o utilizador submete o formulário. Perfeito para validação.

Change

Dispara quando o valor de um input, select ou textarea muda. Útil para reações em tempo real.

Scroll

Dispara quando o utilizador faz scroll. Permite criar animações de entrada, carregamento infinito, etc.

Hover (mouseover/mouseout)

Dispara quando o rato entra ou sai de um elemento. Ideal para efeitos visuais e tooltips.

Keydown/Keyup

Dispara quando uma tecla é pressionada ou solta. Útil para atalhos, validação de entrada, etc.

Diagrama visual mostrando diferentes tipos de eventos JavaScript no navegador

Como Usar addEventListener

A forma moderna e correta de capturar eventos é usando addEventListener . É flexível, permite múltiplos listeners no mesmo elemento e é fácil de remover depois.

const botao = document.querySelector(‘.meu-botao’);

botao.addEventListener(‘click’, function() {

console.log(‘Botão foi clicado!’);

});

A sintaxe é simples: elemento, tipo de evento entre aspas, e depois a função que executa quando o evento acontece. A função recebe um objeto event com informações sobre o que aconteceu.

Exemplo Prático: Validar um Formulário

Quer validar um email quando o utilizador sai do campo? Usa o evento blur . Ou melhor ainda, valida enquanto escreve com input .

Tela de código mostrando exemplo de addEventListener com função callback em JavaScript

Técnicas Mais Avançadas (Mas Úteis)

Uma vez que dominas o básico, há alguns truques que tornam o código mais eficiente e elegante.

Event Delegation

Imagina que tens uma lista com 100 itens e cada um precisa reagir a cliques. Não adiciones 100 listeners — adiciona um listener na lista inteira. O evento “bubbles” para cima, e tu verificas qual elemento foi realmente clicado. Muito mais eficiente.

Prevent Default

Links têm comportamento padrão (navegar). Botões em formulários têm comportamento padrão (submeter). Com event.preventDefault() consegues parar isso e fazer algo customizado. Exemplo: validar antes de submeter.

Throttle e Debounce

Eventos como scroll ou resize disparam muito rapidamente — às vezes 60 vezes por segundo. Se tens código pesado ali, o site fica lento. Throttle limita a frequência (executa cada X milissegundos). Debounce espera que o utilizador pare (executa X milissegundos depois do último evento).

Visualização de como event bubbling funciona na hierarquia do DOM com setas mostrando fluxo

Exemplos do Mundo Real

Aqui estão casos que vais encontrar em projetos reais.

Menu Mobile Colapsável

Click no ícone hamburger alterna a classe “open” no menu. Com CSS, a classe open mostra/esconde o conteúdo. Simples e eficiente — sem JavaScript pesado.

Busca em Tempo Real

Enquanto o utilizador digita, um evento input filtra uma lista. A cada keystroke, a lista atualiza. Com debounce, não fica pesado.

Carrinho de Compras

Clicks em “adicionar ao carrinho” disparam eventos que atualizam a contagem. Usa event delegation para gerenciar múltiplos produtos sem listeners repetidos.

Animação ao Scroll

Quando um elemento entra na viewport (durante scroll), dispara uma animação. Com throttle, o código fica rápido e fluído.

Dicas Importantes (Que Vão Te Poupar Horas)

01

Sempre verifica se o elemento existe

Se procuras um elemento com querySelector e ele não existe, recebes null . Adicionar um listener em null causa erro. Sempre verifica: if (elemento) { ... }

02

Usa classes em vez de IDs quando possível

IDs devem ser únicos. Se tens múltiplos elementos com o mesmo comportamento, usa classes e querySelectorAll . Mais flexível e reutilizável.

03

Remove listeners quando não precisas

Se crias elementos dinamicamente e depois os removes, remove também os listeners. Caso contrário, acumulas na memória e o site fica mais lento com o tempo.

04

Usa arrow functions com cuidado

Arrow functions não têm seu próprio this . Se precisas de this no handler, usa function declarations normais, não arrows.

Pronto Para Começar?

Eventos são o coração da interatividade web. Com addEventListener e estes conceitos básicos, consegues construir interfaces reativas e responsivas que reagem ao utilizador.

A melhor forma de aprender é experimentando. Pega num projeto pequeno, adiciona alguns listeners, e vê o que consegues fazer. Erros são parte do processo — não é grave.

Próximo passo? Aprende sobre DOM manipulation e animações. Com eventos + DOM + animações, tens o poder para criar quase qualquer interface que imagines.

Nota sobre este Artigo

Este artigo é informativo e educativo. Os exemplos apresentados são simplificados para fins de aprendizagem. Em projetos reais, considere fatores como compatibilidade cross-browser, acessibilidade e performance. O JavaScript evolui constantemente — consulte a documentação oficial MDN para as funcionalidades mais recentes e boas práticas atualizadas.