Element#
Element.prefix#
Właściwość prefix
zwraca prefiks przestrzeni nazwdla danego elementu. Jeśli element nie posiada prefiksu 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:
var element_prefix = element.prefix;
gdzie poszczególne człony oznaczają:
- element_prefix - łańcuch znakowy reprezentujący prefiks przestrzeni nazw elementu lub wartość
null
. - element - węzeł będący obiektem kontekstu.
Wartość zwracana przez właściwość prefix
nie musi być identyczna z wartością zwracaną przez polecenie Node.lookupPrefix()
. Wspomniana metoda lokalizuje prefiks przestrzeni nazw w całym zasięgu przestrzeni nazw, czyli może przechodzić do przodków danego elementu. Wartość dla właściwości prefix
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:
<script>
var html = document.documentElement; // referencja do elementu HTML
document.write(html); // [object HTMLHtmlElement]
document.write("<br><br>");
document.write(html.prefix); // null
document.write("<br>");
document.write(document.createElementNS("moja_przestrzeń_nazw", "test:p").prefix); // test
document.write("<br><br>");
document.write(document.prefix); // undefined (Firefox, Chrome), null (pozostałe przeglądarki) - błędne działanie
document.write("<br>");
document.write(Element.prototype.hasOwnProperty("prefix")); // true
document.write("<br>");
document.write(html.__proto__.__proto__.__proto__.hasOwnProperty("prefix")); // true
document.write("<br>");
document.write(html.__proto__.__proto__.__proto__); // [object ElementPrototype]
</script>
Właściwość prefix
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ść prefix
zgodnie z najnowszymi wymaganiami specyfikacji DOM4, pozostałe programy implementują wcześniejsze wytyczne (szczegóły).
Składnia Web IDL#
interface Element : Node { readonly attribute DOMString? prefix; }