Event borbulhamento e captura de eventos em Javascript explicados: como utilizar?

Publicados: 2020-03-26

Índice

Introdução

Duas terminologias muito comuns usadas para fluxo de eventos em JavaScript são Event Bubbling e Event Capture .

Essas são duas maneiras importantes pelas quais um evento é propagado na API HTML DOM quando ambos os elementos registram um identificador para um evento e o evento ocorre em um elemento aninhado em outro elemento. A ordem na qual um evento é recebido pelos elementos é determinada pelo modo de propagação do evento. Continue lendo para saber o uso de Event Bubbling e Event Capture em JavaScript e por que eles são necessários no desenvolvimento de páginas da web.

Principais conclusões

  • Explicando os termos evento, fluxo de eventos, manipuladores de eventos e ouvintes de eventos
  • Evento borbulhante e captura de eventos em JavaScript
  • Utilitário de borbulhamento de eventos e captura de eventos em JavaScript

Eventos e fluxo de eventos

A interação de páginas web HTML com JavaScript é mediada por eventos que ocorrem quando a página é manipulada pelo usuário ou pelo navegador. O carregamento de uma página, o usuário clicar em um botão, fechar uma janela, são exemplos de eventos.

A ordem em que os eventos são recebidos na página da Web é denominada fluxo de eventos. O processo de fluxo de eventos é concluído em 3 etapas – captura de eventos (interceptação do evento), direcionamento do evento (o destino obtém o evento) e borbulhamento do evento (resposta ao evento).

Manipuladores de eventos e ouvintes de eventos em JavaScript

Event Handler é um código JavaScript que é escrito dentro das tags HTML em vez de dentro das tags <script>. Os manipuladores de eventos executam JavaScript quando um evento acontece, como pressionar um botão. A sintaxe básica é: name_of_handler=”Código JavaScript aqui”

<a href=”https://www.google.com” onClick=”alert('hello!”)”>Goolge</a>

Um procedimento que aguarda a ocorrência de um evento é um Event Listener. JavaScript tem uma função embutida, o addEventListener(), que recebe o evento para ouvir e chama um segundo argumento quando o referido evento é acionado. A sintaxe é: element.addEventListener(evento, ouvinte);

Evento borbulhando em JavaScript

Event Bubbling é uma terminologia comum encontrada ao desenvolver uma página da Web ou um aplicativo da Web usando JavaScript. O borbulhamento de eventos é um estágio no processo de fluxo de eventos quando o evento começa no elemento mais específico ou no nó mais profundamente aninhado no DOM e subsequentemente flui para cima em direção ao nó menos específico, ou seja, o documento.

Fonte

<!DOCTYPE HTML>
<html>
<cabeça>
<título>……</título>
</head>
<corpo>
<div id=”demo”> Pressione aqui.</div>
</body>
</html>

Ao clicar no elemento <div>, o evento 'click' ocorre na seguinte ordem:

  1. <div>
  2. <corpo>
  3. <html>
  4. Documento

O evento 'click' aciona o elemento <div>. Cada nó é subsequentemente disparado ao longo da árvore DOM, para cima, até que o documento objeto seja alcançado.

Leia: Ideias e tópicos de projetos de pilha completa

Captura de eventos em JavaScript

Event Capture é um modelo alternativo no fluxo de eventos que foi introduzido pela primeira vez pelo Netscape Browser. Como afirmado por este modelo, um evento é recebido primeiro pelo nó menos específico e o nó mais específico ou o elemento mais profundamente aninhado recebe o evento por último. Nesse modelo, um evento é interceptado antes de atingir o destino real. No entanto, ao contrário do Event Bubbling, os navegadores modernos não têm suporte para esse modelo e, portanto, a captura de eventos pode ser usada apenas em circunstâncias específicas.

Fonte

Referindo-se ao exemplo indicado na seção anterior, clicar no elemento <div> aciona o evento 'click' na seguinte ordem:

  1. Documento
  2. <corpo>
  3. <html>
  4. <div>

O que acontece na Fase de Captura de Eventos?

Na fase de captura de eventos, são chamados os listeners de captura cujo valor é registrado como “true”. Está escrito da seguinte forma:

el.addEventListener('Click', listener, true)

Aqui um evento é capturado porque o valor do ouvinte é registrado como “true”. Caso não haja valor, o valor padrão é “false” com o resultado de que o evento não é capturado. Portanto, nesta fase, apenas os eventos com valor verdadeiro são chamados e capturados. Na fase de destino subsequente, todos os ouvintes registrados são chamados, independentemente de seu valor ser registrado como verdadeiro ou falso.

Fluxo de eventos DOM em JavaScript

O DOM Nível 2 especifica três estágios para o modelo de fluxo de eventos:

  • Fase de captura de eventos
  • No alvo
  • Fase de borbulhamento do evento

Fonte

Se houver uma oportunidade de interceptar o evento, a captura de eventos ocorre primeiro. Isso é seguido pelo destino real recebendo o evento. Eventualmente, na fase de borbulhamento do evento, ocorre a resposta final ao evento. Referindo-se ao exemplo indicado na seção anterior, clicar no elemento <div> dispara o evento 'click' na ordem ilustrada no diagrama acima.

Leia: Salário Full Stack Developer na Índia

Utilitário de borbulhamento de eventos e captura de eventos em JavaScript

Na Fase Event Bubbling, apenas os eventos com valor de flag “false” (não-capturadores) são chamados. Event Bubbling e Event Capture são aspectos importantes do DOM.

el.addEventListener('Click', listener, false) // listener não captura
el.addEventListener('Click', listener) // o listener não captura

O código acima exemplifica como funcionam as fases de borbulhamento e captura. Todo evento não atinge o alvo. Alguns eventos não são borbulhados e param após a fase de destino. O evento bubbling não é aplicável em todos os tipos de eventos e o listener deve ter a propriedade booleana “.bubble” do objeto do evento além de possuir algumas outras propriedades como – e.target (para referenciar o destino do evento) e e.eventPhase (os ouvintes atuais se registram neste modo).

Conclusão

O fluxo de eventos em JavaScript tem três fases importantes – fase de captura de eventos, fase de destino e fase de borbulhamento de eventos. A Captura de Eventos é a primeira a ocorrer, onde os eventos são interceptados se necessário. Isso é seguido pelo evento atingindo o alvo real e a fase final é borbulhante, quando ocorre a resposta final a um evento. Assim, pode-se concluir apropriadamente que Event Bubbling e Event Capture em JavaScript são os fundamentos dos quais o manipulador de eventos e a delegação de eventos são dependentes.

Se você estiver interessado em aprender mais sobre full stack, confira o PG Diploma in Full-stack Software Development da upGrad & IIIT-B, que é projetado para profissionais que trabalham e oferece mais de 500 horas de treinamento rigoroso, mais de 9 projetos e atribuições, IIIT- B Status de ex-aluno, projetos práticos práticos e assistência de trabalho com as principais empresas.

Aterre no seu emprego dos sonhos

UPGRAD E DIPLOMA PG DO IIIT-BANGALORE EM DESENVOLVIMENTO DE SOFTWARE
Saiba mais @ upGrad