Eventos

Uma página que nunca reage é apenas um documento. No momento em que você quer que algo aconteça quando uma pessoa clica em um botão, digita em uma caixa de pesquisa ou envia um formulário, você precisa de uma forma de dizer "quando isso acontecer, execute este código". É isso que são eventos. Este capítulo é sobre escutar as coisas que um usuário faz e responder a elas.
Escutando um evento
Um evento é algo que acontece na página: um clique, uma tecla pressionada, um formulário sendo enviado. Para responder a um, você escolhe um elemento, nomeia o evento que lhe interessa e passa uma função para executar quando isso acontecer.
Essa função é chamada de handler (manipulador). O método que a vincula é addEventListener:
const button = document.querySelector(".buy-button");
button.addEventListener("click", () => {
console.log("Alguém clicou em comprar");
});Leia da esquerda para a direita: neste botão, escute por "click", e quando isso acontecer, execute esta função. O handler é executado toda vez que o evento acontece, não apenas uma vez. Clique três vezes e ele será executado três vezes.
Os handlers são funções ordinárias, e os elementos aos quais você os anexa vêm do DOM. Se você conseguir selecionar um elemento e escrever uma função, você pode responder ao que o usuário faz com ele.
"click", e dê a addEventListener uma função para executar. Essa função é o handler, e ela é executada toda e cada vez que o evento acontece, não apenas uma vez. Este único método está por trás de quase tudo o que uma página faz em resposta a você. O objeto de evento
Quando o navegador executa seu handler, ele o entrega uma informação: um objeto de evento descrevendo o que aconteceu. Capture-o dando ao seu handler um parâmetro, geralmente nomeado event:
const button = document.querySelector(".buy-button");
button.addEventListener("click", (event) => {
console.log(event.target); // o elemento que foi clicado
});A parte mais útil é event.target: o elemento em que o evento aconteceu. Se o clique foi no botão, event.target é esse botão. Você não precisa selecioná-lo novamente, o evento já te diz de onde veio.
event para capturá-lo. A parte que você vai usar mais é event.target, o elemento em que o evento aconteceu. Sem necessidade de selecioná-lo novamente, o evento já sabe de onde veio. Eventos comuns
Um punhado de eventos cobre a maioria do que você vai construir:
click: o usuário clica ou toca em algo.input: o valor de um campo de texto muda enquanto eles digitam.submit: um formulário é enviado.keydown: uma tecla é pressionada.
O complicado é submit. Por padrão, enviar um formulário recarrega a página, o que anula tudo o que seu JavaScript estava fazendo. Para parar isso, chame event.preventDefault() dentro do handler:
const form = document.querySelector("form");
form.addEventListener("submit", (event) => {
event.preventDefault(); // parar a página de recarregar
console.log("Formulário enviado, página fica no lugar");
});click, input, submit e keydown. O que você deve lembrar é submit: um formulário recarrega a página por padrão, então chame event.preventDefault() no handler para parar isso e manter o controle. Perca isso e sua página vai recarregar debaixo de você, que é confuso a primeira vez. Por onde os eventos vão daqui
Eventos são como uma página escuta. Você escolhe um elemento, nomeia o que lhe interessa e executa uma função quando isso acontece, lendo os detalhes do objeto de evento enquanto avança. Quase todos os recursos interativos são construídos a partir desse loop.
O próximo passo natural é fazer algo lento em um handler, como enviar um formulário para um servidor ou carregar dados novos, sem congelar a página. É para isso que o código async serve, e é o próximo capítulo. Handlers que chegam em dados estruturados, como uma lista de itens que você mantém em objetos, também contam com o que você já sabe.

