Node#

Node.isDefaultNamespace()#

Metoda isDefaultNamespace() zwraca boolowską wartość true jeśli przekazana przestrzeń nazw jest zgodna z domyślną przestrzenią nazw dla danego węzła, w przeciwnym razie zwrócona zostanie wartość false.

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 is_default = node.isDefaultNamespace(namespace);

gdzie poszczególne człony oznaczają:

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

  1. Jeśli namespace jest pustym łańcuchem znakowym, to ustaw ją na wartość null.
  2. Niech defaultNamespace będzie wynikiem lokalizacji przestrzeni nazw dla obiektu kontekstu z przekazaniem wartości null.
  3. Zwróć boolowską wartość true jeśli defaultNamespace jest identyczna z namespace, w przeciwnym razie zwróć boolowską wartość false.

Analizując dokładnie wszystkie powiązane z metodą isDefaultNamespace() algorytmy można zauważyć, że sprawdzanie przekazanej przestrzeni nazw pod kątem zgodności z domyślną przestrzenią nazw może przechodzić na inne węzły (zawsze są to elementy), wszystko zależy od rodzaju aktualnie weryfikowanego węzła.

Alternatywnie można skorzystać z podobnie działającej metody Node.lookupNamespaceURI() w połączeniu z kilkoma dodatkowymi linijkami kodu.

Prosty przykład:

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

	document.write(document.isDefaultNamespace("")); // false (Opera, Chrome, IE9), true (Firefox)
	document.write("<br>");
	document.write(document.body.isDefaultNamespace(null)); // false (Opera, Chrome, IE9), true (Firefox)
	document.write("<br>");
	document.write(document.isDefaultNamespace("http://www.w3.org/1999/xhtml")); // true (Opera, Chrome, IE9), false(Firefox)

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

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

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

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

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

	// Porównujemy przekazaną przestrzeń nazw z domyślną przestrzeń nazw węzła (która może być odczytywana z rodzica węzła)
	document.write(newDiv.isDefaultNamespace("www.test.pl")); // true
	document.write("<br>");
	document.write(newTest.isDefaultNamespace("www.test.pl")); // true - sprawdzanie przeszło z newTest na rodzica newDiv
	document.write("<br>");
	document.write(newP.isDefaultNamespace("www.test.pl")); // false

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

	document.write(document.implementation.createDocument(null, "", null).isDefaultNamespace("")); // false - zgodnie z algorytmem nie powinno być true?
	document.write("<br>");
	document.write(document.implementation.createDocument("www.test.pl", "", null).isDefaultNamespace("www.test.pl")); // false - zgodnie z algorytmem nie powinno być true?
	document.write("<br>");
	document.write(document.implementation.createDocument("www.test.pl", "root", null).isDefaultNamespace("www.test.pl")); // true

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

	document.write(document.createDocumentFragment().isDefaultNamespace("http://www.w3.org/1999/xhtml")); // false
	document.write("<br>");
	document.write(document.createDocumentFragment().isDefaultNamespace(null)); // false - zgodnie z algorytmem nie powinno być true?

</script>

Na chwilę obecną żadna aktualna przeglądarka nie obsługuje metody isDefaultNamespace() 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 {
	boolean isDefaultNamespace(DOMString? namespace);
}

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

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