Bąbelkowanie zdarzeń i przechwytywanie zdarzeń w języku JavaScript Objaśnienie: jak z niego korzystać?

Opublikowany: 2020-03-26

Spis treści

Wstęp

Dwie bardzo popularne terminologie używane w przepływie zdarzeń w JavaScript to Event Bubbling i Event Capture .

Są to dwa ważne sposoby propagowania zdarzenia w interfejsie API HTML DOM, gdy oba elementy rejestrują uchwyt zdarzenia, a zdarzenie występuje w elemencie zagnieżdżonym w innym elemencie. Kolejność, w jakiej zdarzenie jest odbierane przez elementy, jest określona przez tryb propagacji zdarzenia. Czytaj dalej, aby dowiedzieć się, jak używać funkcji Bublowanie zdarzeń i Przechwytywanie zdarzeń w JavaScript i dlaczego są one wymagane w tworzeniu stron internetowych.

Kluczowe dania na wynos

  • Objaśnienie terminów zdarzenie, przepływ zdarzeń, programy obsługi zdarzeń i detektory zdarzeń
  • Propagowanie i przechwytywanie zdarzeń w JavaScript
  • Użyteczność tworzenia pęcherzyków i przechwytywania zdarzeń w JavaScript

Wydarzenia i przebieg wydarzeń

Interakcja stron internetowych HTML z JavaScript odbywa się za pośrednictwem zdarzeń, które występują, gdy strona jest manipulowana przez użytkownika lub przeglądarkę. Załadowanie strony, kliknięcie przycisku przez użytkownika, zamknięcie okna to przykłady zdarzeń.

Kolejność, w jakiej zdarzenia są odbierane na stronie internetowej, jest określana jako przepływ zdarzeń. Proces przepływu zdarzenia jest realizowany w 3 krokach – przechwytywanie zdarzenia (przechwytywanie zdarzenia), kierowanie na zdarzenie (cel pobiera zdarzenie) i propagacja zdarzenia (odpowiedź na zdarzenie).

Obsługa zdarzeń i detektory zdarzeń w JavaScript

Event Handler to kod JavaScript, który jest zapisany wewnątrz tagów HTML zamiast wewnątrz tagów <script>. Programy obsługi zdarzeń wykonują JavaScript, gdy wystąpi zdarzenie, takie jak naciśnięcie przycisku. Podstawowa składnia to: name_of_handler=”tutaj kod JavaScript”

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

Procedura oczekująca na wystąpienie zdarzenia to Nasłuchiwanie Zdarzeń. JavaScript ma wbudowaną funkcję addEventListener(), która odbiera zdarzenie do nasłuchiwania i wywołuje drugi argument, gdy wspomniane zdarzenie jest uruchamiane. Składnia to: element.addEventListener(event, listener);

Propagowanie zdarzeń w JavaScript

Event Bubbling to powszechna terminologia, którą można napotkać podczas tworzenia strony internetowej lub aplikacji internetowej przy użyciu języka JavaScript. Propagowanie zdarzeń to etap w procesie przepływu zdarzeń, w którym zdarzenie rozpoczyna się w najbardziej konkretnym elemencie lub najgłębiej zagnieżdżonym węźle w DOM, a następnie płynie w górę w kierunku najmniej konkretnego węzła, czyli dokumentu.

Źródło

<!DOCTYPE HTML>
<html>
<głowa>
<title>……</title>
</head>
<ciało>
<div id=”demo”> Naciśnij tutaj.</div>
</body>
</html>

Po kliknięciu elementu <div> zdarzenie „klik” odbywa się w następującej kolejności:

  1. <div>
  2. <ciało>
  3. <html>
  4. Dokument

Zdarzenie „click” uruchamia element <div>. Każdy węzeł jest następnie uruchamiany wzdłuż drzewa DOM w górę, aż do osiągnięcia dokumentu obiektu.

Przeczytaj: Pełne pomysły i tematy projektów

Przechwytywanie zdarzeń w JavaScript

Przechwytywanie zdarzeń to alternatywny model przepływu zdarzeń, który został po raz pierwszy wprowadzony przez przeglądarkę Netscape. Zgodnie z tym modelem, zdarzenie jest odbierane jako pierwsze przez najmniej określony węzeł, a najbardziej konkretny węzeł lub najgłębiej zagnieżdżony element odbiera zdarzenie jako ostatnie. W tym modelu zdarzenie jest przechwytywane, zanim osiągnie rzeczywisty cel. Jednak w przeciwieństwie do Event Bubbling, nowoczesne przeglądarki nie obsługują tego modelu, a zatem Event Capturing może być używany tylko w określonych okolicznościach.

Źródło

Odnosząc się do przykładu podanego w poprzedniej sekcji, kliknięcie elementu <div> uruchamia zdarzenie „kliknij” w następującej kolejności:

  1. Dokument
  2. <ciało>
  3. <html>
  4. <div>

Co dzieje się w fazie przechwytywania wydarzeń?

W fazie przechwytywania zdarzeń wywoływane są detektory przechwytywania, których wartość jest zarejestrowana jako „prawda”. Jest napisany w następujący sposób:

el.addEventListener('Klik', słuchacz, prawda)

Tutaj zdarzenie jest przechwytywane, ponieważ wartość odbiornika jest zarejestrowana jako „prawda”. W przypadku braku wartości, wartością domyślną jest „false”, co oznacza, że ​​zdarzenie nie zostanie przechwycone. Dlatego w tej fazie wywoływane i przechwytywane są tylko zdarzenia o prawdziwej wartości. W kolejnej fazie docelowej wywoływane są wszystkie zarejestrowane detektory, niezależnie od tego, czy ich wartość jest zarejestrowana jako prawda czy fałsz.

Przepływ zdarzeń DOM w JavaScript

DOM Level 2 określa trzy etapy modelu przepływu zdarzeń:

  • Faza przechwytywania wydarzeń
  • Na cel
  • Faza bulgotania zdarzeń

Źródło

Jeśli istnieje możliwość przechwycenia zdarzenia, najpierw następuje przechwycenie zdarzenia. Po tym następuje rzeczywisty cel otrzymujący zdarzenie. Ostatecznie w fazie bąblowania wydarzenia ma miejsce ostateczna reakcja na wydarzenie. Odnosząc się do przykładu podanego w poprzedniej sekcji, kliknięcie elementu <div> uruchamia zdarzenie „klik” w kolejności przedstawionej na powyższym schemacie.

Przeczytaj: Pełna pensja programisty w Indiach

Użyteczność tworzenia pęcherzyków i przechwytywania zdarzeń w JavaScript

W fazie propagacji zdarzeń wywoływane są tylko zdarzenia, które mają wartość flagi „false” (nie-przechwytujące). Event Bubling i Event Capture to ważne aspekty DOM.

el.addEventListener('Click', listener, false) // listener nie przechwytuje
el.addEventListener('Click', listener) // listener nie przechwytuje

Powyższy kod ilustruje, jak działają fazy bąbelkowania i przechwytywania. Każde wydarzenie nie osiąga celu. Niektóre wydarzenia nie są bąbelkowe i kończą się po fazie docelowej. Zdarzenie propagacji nie ma zastosowania we wszystkich rodzajach zdarzeń, a detektor powinien mieć właściwość Boolean „.bubble” obiektu zdarzenia, oprócz posiadania kilku innych właściwości, takich jak – e.target (w celu odniesienia się do celu zdarzenia) i e.eventPhase (obecni słuchacze rejestrują się w tym trybie).

Wniosek

Przepływ zdarzeń w JavaScript ma trzy ważne fazy — fazę przechwytywania zdarzeń, fazę docelową i fazę propagacji zdarzeń. Przechwytywanie zdarzeń to pierwsze miejsce, w którym zdarzenia są przechwytywane w razie potrzeby. Po tym następuje zdarzenie osiągające rzeczywisty cel, a końcowa faza bulgocze, kiedy ma miejsce ostateczna reakcja na zdarzenie. W związku z tym można odpowiednio wywnioskować, że Event Bubbling i Event Capturing w JavaScript są podstawą, od której zależy obsługa zdarzeń i delegowanie zdarzeń.

Jeśli chcesz dowiedzieć się więcej o pełnym stosie, zapoznaj się z dyplomem PG upGrad i IIIT-B w zakresie pełnego tworzenia oprogramowania, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 500 godzin rygorystycznego szkolenia, ponad 9 projektów i zadań, IIIT- Status absolwenta B, praktyczne, praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.

Wyląduj na swojej wymarzonej pracy

AKTUALIZACJA I DYPLOM PG IIIT-BANGALORE W ROZWOJU OPROGRAMOWANIA
Dowiedz się więcej @ upGrad