Element#

Element.namespaceURI#

Właściwość namespaceURI zwraca przestrzeń nazw dla danego elementu. Jeśli element nie posiada przestrzeni nazw to zwrócona zostanie wartość null. Właściwość jest tylko do odczytu.

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 namespace = element.namespaceURI;

gdzie poszczególne człony oznaczają:

Wartość zwracana przez właściwość namespaceURI nie musi być identyczna z wartościami zwracanymi przez polecenia Node.isDefaultNamespace() lub Node.lookupNamespaceURI(). Wspomniane metody lokalizują przestrzeń nazw w całym zasięgu przestrzeni nazw, czyli mogą przechodzić do przodków danego elementu. Wartość dla właściwości namespaceURI ustalana jest od razu przy tworzeniu elementu, np. automatycznie w czasie wczytywania dokumentu przez przeglądarkę lub przez nas samych za pomocą metody Document.createElementNS().

W związku z powyższym przenoszenie elementów między dokumentami w żadnym wypadku nie wpływa na zmianę przypisanej przestrzeni nazw czy prefiksu przestrzeni nazw. Manipulowanie przestrzeniami nazw w elementach, po ich utworzeniu, nie jest możliwe.

Prosty przykład:

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

	var html = document.documentElement; // referencja do elementu HTML

	document.write(html); // [object HTMLHtmlElement]

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

	document.write(html.namespaceURI); // http://www.w3.org/1999/xhtml
	document.write("<br>");
	document.write(document.createElementNS("", "p").namespaceURI); // null

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

	document.write(document.namespaceURI); // undefined (Firefox, Chrome), null (pozostałe przeglądarki) - błędne działanie
	document.write("<br>");
	document.write(Element.prototype.hasOwnProperty("namespaceURI")); // true
	document.write("<br>");
	document.write(html.__proto__.__proto__.__proto__.hasOwnProperty("namespaceURI")); // true
	document.write("<br>");
	document.write(html.__proto__.__proto__.__proto__); // [object ElementPrototype]

</script>

Właściwość namespaceURI dla węzła typu Element pojawia się dopiero w specyfikacji DOM4. W starszych wersjach DOM właściwość była definiowana dla dowolnego węzła, ale obecnie została całkowicie usunięta z interfejsu Node.

Na chwilę obecną jedynie przeglądarki Firefox i Chrome obsługują właściwość namespaceURI zgodnie z najnowszymi wymaganiami specyfikacji DOM4, pozostałe programy implementują wcześniejsze wytyczne (szczegóły).

Składnia Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
interface Element : Node {
	readonly attribute DOMString? namespaceURI;
}

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

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