Document#
Wstęp#
Interfejs Document stanowi definicję Web IDL dla jednego z węzłów występujących w drzewie węzłów. Obiekty typu Document
są potocznie nazywane dokumentami # (documents) i skojarzone zostały z kilkoma podstawowymi zagadnieniami.
Interfejs Document gromadzi w swojej definicji najbardziej ogólne właściwości i metody, które będą miały zastosowanie dla dowolnego dokumentu obsługiwanego przez technologię DOM, niezależnie od jego typu. Dzięki wyodrębnieniu tych poleceń do osobnego interfejsu nie ma potrzeby dublowania tych samych opisów w każdym interfejsie, który mógłby po nim dziedziczyć (np. XMLDocument).
Obecnie dąży się do sytuacji, w której wszystkie dokumenty będą używały jedynie interfejsu Document, a ich specyficzny charakter mają wyrażać wewnętrzne stany (np. typ czy typ zawartości). Jest to wyjątkowo inwazyjna zmiana i nie wiadomo czy kiedykolwiek dojdzie do skutku (szczegóły).
Kolejne specyfikacje mogą bezpośrednio rozszerzać interfejs Document o dodatkowe polecenia. Oto kilka z nich:
- HTML Living Standard (WHATWG)
- CSS Object Model (CSSOM) [W3C]
- CSSOM View Module (W3C)
- Selection API (W3C)
- Document Object Model (DOM) Level 3 XPath Specification (W3C)
W ujęciu programistycznym dokumenty są obiektami najwyższego rzędu i to właśnie one reprezentują każdy kompletny dokument. Obiekt ten z całą swoją bezpośrednią zawartością tworzy drzewo dokumentu (drzewo DOM), czyli bardziej skonkretyzowane drzewo węzłów. W drzewach tych węzły typu Document
są utożsamiane z ich korzeniami. Dokumenty mogą być także właścicielami dla wszystkich pozostałych rodzajów węzłów.
Interfejs Document dziedziczy po interfejsie Node, dlatego ma dostęp do wszystkich poleceń z tego interfejsu (oraz z kolejnych interfejsów w łańcuchu dziedziczenia). Interfejs Document bezpośrednio implementuje kolejny interfejs ParentNode ze wszystkimi jego podstawowymi zagadnieniami i poleceniami.
Dokument można utworzyć za pomocą różnych poleceń definiowanych w kilku specyfikacjach, chociaż ich jednolita implementacja w aktualnych przeglądarkach internetowych pozostawia wiele do życzenia:
Właściwości Document#
Nazwa | Opis |
---|---|
Document.characterSet | Zwraca nazwę z kodowania stosowanego w danym dokumencie. |
Document.charset | Zwraca nazwę z kodowania stosowanego w danym dokumencie. |
Document.compatMode | Zwraca informację pozwalającą ustalić tryb renderowania dla danego dokumentu. |
Document.contentType | Zwraca typ zawartości dla danego dokumentu. |
Document.doctype | Zwraca deklarację typu dokumentu dla danego dokumentu. |
Document.documentElement | Zwraca element dokumentowy dla danego dokumentu. |
Document.documentURI | Zwraca adres URL dla danego dokumentu. |
Document.implementation | Zwraca implementację DOM dla danego dokumentu. |
Document.inputEncoding | Zwraca nazwę z kodowania stosowanego w danym dokumencie. |
Document.origin | Zwraca pochodzenie dla danego dokumentu. |
Document.URL | Zwraca adres URL dla danego dokumentu. |
Metody Document#
Nazwa | Opis |
---|---|
Document.adoptNode() | Adoptuje (na zasadzie przenoszenia) przekazany węzeł z innego dokumentu do danego dokumentu i zwraca referencję do adoptowanego węzeł. |
Document.createAttribute() | Tworzy nowy atrybut z określoną nazwa lokalną dla danego dokumentu. |
Document.createAttributeNS() | Tworzy nowy atrybut z określoną przestrzenią nazw i nazwą kwalifikowaną dla danego dokumentu. |
Document.createComment() | Tworzy nowy węzeł komentarzowy z określonymi danymi tekstowymi dla danego dokumentu. |
Document.createDocumentFragment() | Tworzy nowy fragment dokumentu dla danego dokumentu. |
Document.createElement() | Tworzy nowy węzeł elementowy z określoną nazwą lokalną dla danego dokumentu. |
Document.createElementNS() | Tworzy nowy węzeł elementowy z określoną przestrzenią nazw i nazwą kwalifikowaną dla danego dokumentu. |
Document.createEvent() | Tworzy nowe zdarzenie o określonym ogólnym interfejsie zdarzenia dla danego dokumentu. |
Document.createNodeIterator() | Tworzy nowego iterator węzłowego z określonym korzeniem, maską bitową i filtrem dla danego dokumentu. |
Document.createProcessingInstruction() | Tworzy nową instrukcję przetwarzania z określonym celem i danymi tekstowymi dla danego dokumentu. |
Document.createRange() | Tworzy nowy zakres dla danego dokumentu. |
Document.createTextNode() | Tworzy nowy węzeł tekstowy z określonymi danymi tekstowymi dla danego dokumentu. |
Document.createTreeWalker() | Tworzy nowego przemierzacza drzewa z określonym korzeniem, maską bitową i filtrem dla danego dokumentu. |
Document.getElementsByClassName() | Zwraca kolekcję elementową ze wszystkimi węzłami elementowymi o określonych klasach znajdującymi się w danym dokumencie. |
Document.getElementsByTagName() | Zwraca kolekcję elementową ze wszystkimi węzłami elementowymi o określonej nazwie kwalifikowanej znajdującymi się w danym dokumencie. |
Document.getElementsByTagNameNS() | Zwraca kolekcję elementową ze wszystkimi węzłami elementowymi o określonej nazwie lokalnej i przestrzeni nazw znajdującymi się w danym dokumencie. |
Document.importNode() | Importuje (na zasadzie kopiowania) przekazany węzeł z innego dokumentu do danego dokumentu i zwraca referencję do zaimportowanego węzeł. |
Inne Document#
Nazwa | Opis |
---|---|
new Document() | Konstruktor tworzący nowy pusty dokument (wewnętrznie dokument HTML). |
Składnia Web IDL#
[Constructor] interface Document # : Node { [SameObject] readonly attribute DOMImplementation implementation; readonly attribute DOMString URL; readonly attribute DOMString documentURI; readonly attribute DOMString origin; readonly attribute DOMString compatMode; readonly attribute DOMString characterSet; readonly attribute DOMString charset; // historical alias of .characterSet readonly attribute DOMString inputEncoding; // historical alias of .characterSet readonly attribute DOMString contentType; readonly attribute DocumentType? doctype; readonly attribute Element? documentElement; HTMLCollection getElementsByTagName(DOMString qualifiedName); HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName); HTMLCollection getElementsByClassName(DOMString classNames); [NewObject] Element createElement(DOMString localName); [NewObject] Element createElementNS(DOMString? namespace, DOMString qualifiedName); [NewObject] DocumentFragment createDocumentFragment(); [NewObject] Text createTextNode(DOMString data); [NewObject] Comment createComment(DOMString data); [NewObject] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data); Node importNode(Node node, optional boolean deep = false); Node adoptNode(Node node); [NewObject] Attr createAttribute(DOMString localName); [NewObject] Attr createAttributeNS(DOMString? namespace, DOMString qualifiedName); [NewObject] Event createEvent(DOMString interface); [NewObject] Range createRange(); // NodeFilter.SHOW_ALL = 0xFFFFFFFF [NewObject] NodeIterator createNodeIterator(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null); [NewObject] TreeWalker createTreeWalker(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null); }; Document implements ParentNode;