Node#

Node.normalize()#

Metoda normalize() normalizuje całą zawartość tekstową dla danego węzła. W uproszczeniu polega to na tym, że usuwane są z niego wszystkie puste węzły typu Text oraz następuje połączenie pozostałych przyległych węzłów tekstowych w jeden (ten pierwszy) węzeł tekstowy, ale z zachowaniem danych tekstowych ze wszystkich eliminowanych węzłów tekstowych.

Opis działania#

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

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
node.normalize();

gdzie poszczególne człony oznaczają:

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

Wywołanie metody normalize() dla danego węzła będzie miało efekt jedynie w przypadku węzłów, których potomkami mogą być węzły tekstowe, czyli na dzień dzisiejszy, zgodnie z dopuszczalną zawartością, dotyczy to węzłów typu Document, DocumentFragment oraz Element.

Prosty przykład:

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

	var el = document.createElement("div");
	el.appendChild(document.createTextNode(" "));
	el.appendChild(document.createTextNode("Tekst1"));
	el.appendChild(document.createTextNode("Tekst2"));

	// Element DIV ma w tym miejscu następujące węzły tekstowe
	// " " + "Tekst1" + "Tekst2"

	document.write(el.childNodes.length); // 3
	document.write("<br>");

	// Dodajemy do elementu DIV więcej węzłów
	var p1 = document.createElement("p");
	p1.textContent = "Akapit1";

	var p2 = document.createElement("p");
	p2.textContent = "Akapit2";

	el.appendChild(p1);
	el.appendChild(document.createTextNode(" "));
	el.appendChild(document.createTextNode("Tekst3"));
	el.appendChild(p2);
	el.appendChild(document.createTextNode(""));

	// Element DIV ma w tym miejscu następujące węzły tekstowe
	// " " + "Tekst1" + "Tekst2" + "Apakit1" + " " + "Tekst3" + "Akapit2" + ""

	document.write(el.childNodes.length); // 8
	document.write("<br>");

	el.normalize();

	// Element DIV ma w tym miejscu następujące węzły tekstowe
	// " Tekst1Tekst2" + "Apakit1" + " Tekst3" + "Akapit2"

	document.write(el.childNodes.length); // 4

</script>

Warto podkreślić, że pusty węzeł w odniesieniu do węzła tekstowego to ten, który w swoich danych tekstowych nie ma żadnego znaku (nawet spacji). Widać to dokładnie w powyższym przykładzie, gdzie wszystkie węzły tekstowe ze spacjami zostały połączone ze swoimi przyległymi węzłami tekstowymi. Ostatni węzeł tekstowy był pusty, dlatego po normalizacji został całkowicie usunięty z węzła wywołującego metodę normalize().

Składnia Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
interface Node : EventTarget {
	void normalize();
}

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

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