NodeIterator#

NodeIterator.detach()#

Metoda detach() nie robi niczego sensownego. Pozostawiono ją w celu zachowania kompatybilności ze starszymi implementacjami.

Opis działania#

Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:

  1. —
  2. L
  3. K
  4. T'
  5. T
  6. A
  7. O
  8. Z'
  9. Z
  10. #
nodeIterator.detach();

gdzie poszczególne człony oznaczają:

Algorytm wywołania metody detach() nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:

  1. Nie rób niczego.

Prosty przykład:

  1. —
  2. L
  3. K
  4. T'
  5. T
  6. A
  7. O
  8. Z'
  9. Z
  10. #
<script>

	// Tworzymy nowego iteratora węzłowego
	var iterator = document.createNodeIterator(document);

	document.write(iterator.root); // [object HTMLDocument]
	document.write("<br>");
	document.write(iterator.referenceNode); // [object HTMLDocument]

	document.write("<br><br>");

	iterator.detach(); // odłączamy iteratora węzłowego

	document.write(iterator.root); // [object HTMLDocument]
	document.write("<br>");
	document.write(iterator.referenceNode); // [object HTMLDocument] Firefox i Chrome, null dla pozostałych przeglądarek
	document.write("<br>");
	document.write(iterator.nextNode()); // [object HTMLDocument] Firefox i Chrome, wyjątek InvalidStateError dla pozostałych przeglądarek

</script>

Na chwilę obecną jedynie przeglądarki Firefox i Chrome obsługują metodę detach() zgodnie z najnowszymi wymaganiami specyfikacji DOM4.

W przypadku pozostałych programów metoda całkowicie odłącza (dezaktywuje) dany iterator węzłowy, co jest prawidłowe względem poprzedniego standardu. Wszystkie zasoby związane z iteratorem zostają zwolnione, właściwość NodeIterator.referenceNode ustawiona zostaje na wartość null, i nie można wywoływać na nim żadnych metod (zgłoszony zostanie wyjątek "InvalidStateError"), chociaż odczyt ostatnich właściwości z iteratora wciąż jest możliwy. Ponowna aktywacja iteratora, czyli połączenie iteratora z zestawem iteracji nie jest już możliwe, należy utworzyć nowy obiekt.

Składnia Web IDL#

  1. —
  2. L
  3. K
  4. T'
  5. T
  6. A
  7. O
  8. Z'
  9. Z
  10. #
interface NodeIterator {
	void detach();
}

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

NodeIterator (H1) NodeIterator.detach() (H2) Opis działania (H3) Składnia Web IDL (H3) Specyfikacje i inne materiały (H3)