Node#

Node.lookupPrefix()#

Metoda lookupPrefix() zwraca prefiks przestrzeni nazw pasujący do przekazanej przestrzeni nazw dla danego węzła. W przypadku braku dopasowania zwrócona zostanie wartość null.

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. #
var prefix = node.lookupPrefix(namespace);

gdzie poszczególne człony oznaczają:

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

  1. Jeśli namespace ma wartość null lub jest pustym łańcuchem znakowym, to zwróć wartość null.
  2. W przeciwnym razie, w zależności od obiektu kontekstu, wykonaj poniższe podkroki:

Analizując dokładnie wszystkie powiązane z metodą lookupPrefix() algorytmy można zauważyć, że sprawdzanie prefiksu przestrzeni nazw powiązanego z przekazaną przestrzenią nazw może przechodzić na inne węzły (zawsze są to elementy), wszystko zależy od rodzaju aktualnie weryfikowanego węzła.

Prosty przykład:

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

	document.write(document.lookupPrefix("")); // null
	document.write("<br>");
	document.write(document.lookupPrefix(null)); // null

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

	// Tworzymy nowe elementy z różnymi przestrzeniami nazw i prefiksami
	var newDiv = document.createElementNS("www.test.pl", "ns:div");
	var newTest = document.createElementNS("www.test.pl", "test");
	var newP = document.createElement("p");

	newDiv.appendChild(newTest);
	newDiv.appendChild(newP);

	// Odczytujemy przestrzeń nazw i prefiks ustawione w czasie tworzenia węzła
	document.write(newDiv.namespaceURI + " | " + newDiv.prefix); // www.test.pl | ns
	document.write("<br>");
	document.write(newTest.namespaceURI  + " | " + newTest.prefix); // www.test.pl | null
	document.write("<br>");
	document.write(newP.namespaceURI  + " | " + newP.prefix); // http://www.w3.org/1999/xhtml | null

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

	// Wyszukujemy prefiks pasujący do przekazanej przestrzeni nazw (który może być odczytywany z rodzica węzła)
	document.write(newDiv.lookupPrefix("www.test.pl")); // ns
	document.write("<br>");
	document.write(newTest.lookupPrefix("www.test.pl")); // null - zgodnie z algorytmem nie powinno być ns?
	document.write("<br>");
	document.write(newP.lookupPrefix("www.test.pl")); // ns - sprawdzanie przeszło z newP na rodzica newDiv

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

	document.write(document.createDocumentFragment().lookupPrefix("")); // null
	document.write("<br>");
	document.write(document.createDocumentFragment().lookupPrefix(null)); // null

</script>

Na chwilę obecną żadna aktualna przeglądarka nie obsługuje metody lookupPrefix() zgodnie ze wszystkimi wymaganiami specyfikacji DOM4. Wynika to z odmiennego sposobu ustawiania i eksponowania domyślnej przestrzeni nazw w elementach. Oczekuje się, że w niedalekiej przyszłości wszystkie te nieścisłości zostaną wyeliminowane (DOM - Bug 27456, Mozilla - Bug 1061578).

Składnia Web IDL#

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

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

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