Zdarzenia#

Typ unload#

Typ:unload
Interfejs:UIEvent jeśli generowane z interfejsu użytkownika, w przeciwnym razie Event.
Sync / Async:Sync
BąbelkowanieNie
Zaufane celedefaultView, Document, Element
AnulowanieNie
Domyślna akcjaBrak
Kontekst
(zaufane zdarzenia)

Zdarzenie typu unload musi zostać wysłane przez aplikację kliencką w chwili, kiedy implementacja DOM usuwa ze środowiska zasoby (np. dokument) lub wszelkie zasoby zależne (takie jak obrazy, arkusze stylów, skrypty). Dokument musi zostać usunięty dopiero po wysłaniu tego zdarzenia. Jeśli zdarzenie typu unload jest wysyłane to implementacje zobligowane są do wysłania tego zdarzenia co najmniej do węzła typu Document.

W przypadku HTML5 zdarzenie typu unload jest automatycznie odpalane przez przeglądarki internetowe jedynie dla obiektów Window (z nadpisaniem celu zdarzenia na obiekt Document), kiedy powiązane z nimi dokumenty mają zostać usunięte. Opisywane jest to w kroku 7 algorytmu usuwania dokumentu. Algorytm ten będzie wywoływany jako jeden z kroków w innych algorytmach.

Z praktycznego punktu widzenia usunięcie dokumentu można spowodować poprzez:

Na chwilę obecną jedynie przeglądarka IE11 obsługuje zdarzenie typu unload bez żadnych ograniczeń. W przypadku Firefoksa i Chrome zablokowano możliwość tworzenia z poziomu funkcji zwrotnej wszelkich okien dialogowych blokujących interfejs użytkownika, chociaż inne mniej inwazyjne polecenia działają bez problemu. W związku z tym poniższe przykłady najlepiej testować w Firefoksie lub Chrome z włączoną konsolą.

Dla Chrome trzeba włączyć w ustawieniach Narzędzi dla programistów opcję Console: Preserve log upon navigation. Dzięki temu logi nie będą automatycznie czyszczone po przeładowaniu strony i dodatkowo rezultaty z zablokowanych poleceń zostaną przekazane do konsoli.

Prosty przykład:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
<!DOCTYPE html>
<html>

<head>
</head>

<body>

	<p>Usuń stronę poprzez jedną z niżej wymienionych czynności:</p>
	<ul>
		<li>Zamknięcie okna lub karty.</li>
		<li>Odświeżenie strony.</li>
		<li>Wczytanie nowego dokumentu z poziomu paska adresowego lub paska zakładek.</li>
		<li>Wczytanie nowego dokumentu za pomocą odsyłacza <a href="http://www.w3.org">w3.org</a>.</li>
	</ul>

	<p style="color: blue;">Szczegółowe informacje dla przechwyconego zdarzenia (obserwuj też w konsoli):</p>
	<p id="info"></p>

	<script>

		var info = document.getElementById("info");

		function readInfo(e){

			var data = "Interfejs: " + e
				+ "<br>" + "e.type: " + e.type
				+ "<br>" + "e.currentTarget: " + e.currentTarget
				+ "<br>" + "e.target: " + e.target
				+ "<br>" + "e.eventPhase: " + e.eventPhase + "<br><br>";

			info.innerHTML = info.innerHTML + data;
			console.log(data);
			alert(data);

		}

		window.addEventListener("unload", readInfo, false); // faza celu - trzeci argument nieistotny

		document.addEventListener("unload", readInfo, true); // uchwyt nie zostanie wywołany
		document.addEventListener("unload", readInfo, false); // uchwyt nie zostanie wywołany
		document.body.addEventListener("unload", readInfo, false); // uchwyt nie zostanie wywołany

	</script>

</body>

</html>

Trzeba nadmienić, że uchwyty przez właściwość i uchwyty przez atrybut, które zarejestrowano na elemencie <body> lub elementach ramek, są traktowane tak jakby zarejestrowano je na obiekcie Window, który je zawiera. Uwaga nie dotyczy uchwytów przez metodę.

Prosty przykład:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
<!DOCTYPE html>
<html>

<head>
</head>

<body>

	<p>Usuń stronę poprzez jedną z niżej wymienionych czynności:</p>
	<ul>
		<li>Zamknięcie okna lub karty.</li>
		<li>Odświeżenie strony.</li>
		<li>Wczytanie nowego dokumentu z poziomu paska adresowego lub paska zakładek.</li>
		<li>Wczytanie nowego dokumentu za pomocą odsyłacza <a href="http://www.w3.org">w3.org</a>.</li>
	</ul>

	<p style="color: blue;">Szczegółowe informacje dla przechwyconego zdarzenia (obserwuj też w konsoli):</p>
	<p id="info"></p>

	<script>

		var info = document.getElementById("info");

		function readInfo(e){

			var data = "Interfejs: " + e
				+ "<br>" + "e.type: " + e.type
				+ "<br>" + "e.currentTarget: " + e.currentTarget
				+ "<br>" + "e.target: " + e.target
				+ "<br>" + "e.eventPhase: " + e.eventPhase + "<br><br>";

			info.innerHTML = info.innerHTML + data;
			console.log(data);
			alert(data);

		}

		document.body.onunload = readInfo;

		document.body.addEventListener("onunload", readInfo, true); // uchwyt nie zostanie wywołany
		document.body.addEventListener("onunload", readInfo, false); // uchwyt nie zostanie wywołany

	</script>

</body>

</html>

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Zdarzenia (H1) Typ unload (H2) Specyfikacje i inne materiały (H3)