HTML Dokumenty a prvky
HTML Dokumenty a prvky
HTMLDocument je vstupní bod směřující k značkování: parsuje kompletní stránky nebo fragmenty do DOM stromů, jejichž elementy jsou typizovány — <a> se stane HTMLAnchorElement, <input> se HTMLInputElement — takže chování specifické pro elementy žije v třídách specifických pro elementy.
Parsování stránek a fragmentů
HTMLDocument.parse() spotřebuje kompletní stránku; HTMLDocument.parse_fragment() zpracovává částečné značkování; HTMLDocument.load() čte ze zdroje. Výsledek je standardní DOM strom, na kterém operují všechny ostatní vrstvy (CSSOM, selektory, layout).
Typizované třídy elementů
Hierarchie elementů pochází od HTMLElement. Ovládací prvky formulářů jsou modelovány pomocí HTMLFormElement, HTMLInputElement, HTMLButtonElement, HTMLSelectElement, HTMLTextAreaElement, HTMLOptionElement a HTMLFieldSetElement; vložený obsah pomocí HTMLImageElement, HTMLIFrameElement, HTMLEmbedElement, HTMLObjectElement a HTMLCanvasElement; navigace pomocí HTMLAnchorElement, HTMLAreaElement a HTMLMapElement.
Pomocníci pro vkládání elementů
Mimo základní operace Node nabízí Element vkládání s ohledem na pozici: insert_adjacent_html(), insert_adjacent_text() a insert_adjacent_element() umísťují obsah relativně k existujícímu elementu bez ručního sledování sourozenců.
Collections
HTMLCollection a HTMLOptionsCollection poskytují živé pohledy pouze na elementy, které používají API dokumentu a formulářů, spolu s obecnějším NodeList.
Tipy a osvědčené postupy
- Použijte
parse_fragment()pro úryvky — aplikuje pravidla parsování fragmentů místo obnovy celého dokumentu. - Spoléhejte se na typované třídy, když potřebujete stav specifický pro element (zejména ovládací prvky formulářů), místo aby se vše považovalo za obecný
Element. - Upřednostňujte
insert_adjacent_html()pro lokalizovaná vkládání místo přestavování podstromů.
Běžné problémy
| Problém | Příčina | Oprava |
|---|---|---|
| Při parsování fragmentu se přidávají obaly html/body | Použito parse() na částečném značkování | Použijte parse_fragment() |
| Element postrádá specifické členy formuláře | Uzel typován jako obecný Element | Potvrďte, že značka byla rozparsována jako očekávaná třída elementu |
| Vložený značkový kód končí na špatném místě | Špatné klíčové slovo pozice pro sousední vložení | Zkontrolujte čtyři standardní pozice |
FAQ
Jaký je rozdíl mezi parse a parse_fragment?
parse() provádí konstrukci stromu celého dokumentu; parse_fragment() používá algoritmus fragmentu ohraničený kontextovým prvkem — správný nástroj pro částečné značkování.
Jsou třídy elementů standardně typované?
Ano — parsování vytváří typované třídy (HTMLAnchorElement, HTMLInputElement a zbytek rodiny HTMLElement), nikoli obecné uzly.
Mohu kombinovat výstup HTMLDocument s vrstvou CSSOM?
Ano — parsovaný strom je běžný DOM; připojte stylové listy a čtěte vypočtené styly jako obvykle.
API Reference Shrnutí
| Třída/Metoda | Popis: |
|---|---|
HTMLDocument.parse | Rozparsovat kompletní stránku |
HTMLDocument.parse_fragment | Analyzovat částečné značkování |
HTMLDocument.load | Načíst dokument ze zdroje |
HTMLElement | Základní třída hierarchie typovaných elementů |
HTMLFormElement | Prvek kontejneru formuláře |
HTMLCanvasElement | prvek canvas |
Element.insert_adjacent_html | Vkládání značek s rozpoznáním polohy |