NodeFilter#
Wstęp#
Interfejs NodeFilter stanowi definicję Web IDL dla obiektu, który spełnia pomocniczą rolę w czasie pracy z interfejsami NodeIterator i TreeWalker (szczegóły). Obiekt ten jest potocznie nazywany filtrem węzłowym.
Interfejs NodeFilter, w przeciwieństwie do interfejsu EventListener, definiuje stałe, dlatego musi zostać udostępniony pod globalną zmienną o tej samej nazwie. Nie można utworzyć drugiego takiego obiektu za pomocą dedykowanej metody DOM. Stałe mogą być przydatne przy określaniu maski bitowej oraz filtra, chociaż ten drugi będziemy implementowali samodzielnie w standardowym obiekcie JS.
Prosty przykład:
<script>
document.write(NodeFilter); // function NodeFilter() { [native code] }, w IE [object NodeFilter]
document.write("<br>");
document.write(NodeFilter.SHOW_ALL); // 4294967295
document.write("<br>");
document.write(NodeFilter.FILTER_ACCEPT); // 1
</script>
Interfejs NodeFilter nie dziedziczy z żadnego innego interfejsu w ogólnym ujęciu DOM, chociaż w środowisku JS obiekty implementujące ten interfejs będą dziedziczyły z prototypu najwyższego rzędu. Zachowanie takie jest czymś normalnym w przypadku języka ECMAScript.
Metody NodeFilter#
Nazwa | Opis |
---|---|
NodeFilter.acceptNode() | Dodatkowa metoda testująca używana przez filtr, która dostarczana jest jako właściwość obiektu w czasie tworzenia obiektów typu NodeIterator lub TreeWalker . |
Stałe NodeFilter#
Nazwa | Zapis dziesiętny | Zapis szesnastkowy | Znaczenie |
---|---|---|---|
Stałe dla metody acceptNode() # | |||
FILTER_ACCEPT # | 1 | 1 | Wartość zwracana w przypadku akceptacji węzła. |
FILTER_REJECT # | 2 | 2 | Dla Dla |
FILTER_SKIP # | 3 | 3 | Wartość zwracana w przypadku pomijania węzła, ale wszystkie jego dzieci wciąż brane są pod uwagę. |
Stałe dla maski bitowej whatToShow | |||
SHOW_ALL # | 4294967295 | FFFFFFFF | Pokaż wszystkie węzły. |
SHOW_ELEMENT # | 1 | 1 | Pokaż węzły typu Element . |
SHOW_ATTRIBUTE* # | 2 | 2 | Pokaż węzły typu Attribute . |
SHOW_TEXT # | 4 | 4 | Pokaż węzły typu Text . |
SHOW_CDATA_SECTION* # | 8 | 8 | Pokaż węzły typu CDATASection . |
SHOW_ENTITY_REFERENCE* # | 16 | 10 | Pokaż węzły typu EntityReference . |
SHOW_ENTITY* # | 32 | 20 | Pokaż węzły typu Entity . |
SHOW_PROCESSING_INSTRUCTION # | 64 | 40 | Pokaż węzły typu ProcessingInstruction . |
SHOW_COMMENT # | 128 | 80 | Pokaż węzły typu Comment . |
SHOW_DOCUMENT # | 256 | 100 | Pokaż węzły typu Document . |
SHOW_DOCUMENT_TYPE # | 512 | 200 | Pokaż węzły typu DocumentType . |
SHOW_DOCUMENT_FRAGMENT # | 1024 | 400 | Pokaż węzły typu DocumentFragment . |
SHOW_NOTATION* # | 2048 | 800 | Pokaż węzły typu Notation . |
Składnia Web IDL#
callback interface NodeFilter # { // Constants for acceptNode() const unsigned short FILTER_ACCEPT = 1; const unsigned short FILTER_REJECT = 2; const unsigned short FILTER_SKIP = 3; // Constants for whatToShow const unsigned long SHOW_ALL = 0xFFFFFFFF; const unsigned long SHOW_ELEMENT = 0x1; const unsigned long SHOW_ATTRIBUTE = 0x2; // historical const unsigned long SHOW_TEXT = 0x4; const unsigned long SHOW_CDATA_SECTION = 0x8; // historical const unsigned long SHOW_ENTITY_REFERENCE = 0x10; // historical const unsigned long SHOW_ENTITY = 0x20; // historical const unsigned long SHOW_PROCESSING_INSTRUCTION = 0x40; const unsigned long SHOW_COMMENT = 0x80; const unsigned long SHOW_DOCUMENT = 0x100; const unsigned long SHOW_DOCUMENT_TYPE = 0x200; const unsigned long SHOW_DOCUMENT_FRAGMENT = 0x400; const unsigned long SHOW_NOTATION = 0x800; // historical unsigned short acceptNode(Node node); };