Model obiect document

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 19 august 2022; verificările necesită 30 de modificări .

DOM (din engleză  Document Object Model - „Document Object Model”) este o platformă și o interfață de programare  independentă de limbaj, care permite programelor și scripturilor să acceseze conținutul documentelor HTML -, XHTML - și XML , precum și să modifice conținutul, structura si executarea unor astfel de documente.

DOM nu impune restricții asupra structurii unui document. Orice document cu structură cunoscută poate fi reprezentat folosind DOM-ul ca un arbore de noduri, fiecare nod fiind un element, atribut, text, grafic sau orice alt obiect. Nodurile sunt legate printr-o relație părinte-copil.

Inițial, diverse browsere aveau propriile modele de documente (DOM), incompatibile cu restul. Pentru a asigura compatibilitatea reciprocă și inversă, specialiștii consorțiului internațional W3C au clasificat acest model în niveluri, pentru fiecare dintre acestea fiind creată propria sa specificație. Toate aceste specificații sunt combinate într-un grup comun numit W3C DOM.

O altă interfață de programare a aplicațiilor, numită JDOM , oferă un nivel mai înalt decât W3C DOM pentru lucrul cu documente Java XML .

Istorie

Istoria DOM-ului se împletește cu istoria „ războaielor browserelor ” de la sfârșitul anilor 1990 între Netscape Navigator și Microsoft Internet Explorer (și între primele limbaje de scripting JavaScript și JScript ) pentru a fi utilizate pe scară largă în motorul de aspect al paginilor web .

DOM tradițional

Limbajul de programare JavaScript a fost lansat de Netscape Communications în 1995 ca parte a browserului web Netscape Navigator 2.0 . Concurentul Netscape Microsoft a lansat Internet Explorer 3.0 mai târziu în acel an, cu un port de JavaScript numit JScript . JavaScript și JScript le permit dezvoltatorilor să creeze pagini web interactive la nivelul clientului . Capacitatea limitată de a detecta evenimente create de utilizator și de a modifica documentul HTML în prima generație a acestor limbi a devenit în cele din urmă cunoscută sub numele de „DOM level 0” sau „DOM tradițional”. Nu a fost dezvoltat niciun standard independent pentru nivelul DOM 0, dar a fost parțial descris în specificația HTML4 .

DOM-ul tradițional era limitat în tipurile de elemente care puteau fi accesate. Elemente precum formularul ( formularul ), linkul ( linkul ) și imaginea ( imaginea ) pot fi menționate prin nume ierarhice care au început la rădăcina obiectului document. Numele ierarhic poate folosi fie numele, fie indexul secvenţial al elementului comun. De exemplu, un element de introducere a formularului poate fi accesat ca document.formName.inputName sau ca document.forms[0].elements[0].

DOM-ul tradițional a permis validarea formularului din partea clientului și efectul popular de „transformare a obiectului”.

DOM intermediar

În 1997, Netscape și Microsoft au lansat browsere web, respectiv, Netscape Navigator și Internet Explorer versiunile 4.0, adăugând suport pentru HTML dinamic (DHTML), care oferă posibilitatea de a schimba funcționalitatea unui document HTML atunci când este încărcat. DHTML necesita extensii la obiectul document elementar găsit în implementarea DOM tradițională. Deoarece JScript se baza pe JavaScript , implementările DOM tradiționale erau în mare măsură compatibile, dar extensiile DOM pentru DHTML au fost dezvoltate în paralel de fiecare dintre creatorii browserului și au rămas incompatibile. Aceste versiuni ale DOM au devenit cunoscute ca „DOM intermediar”.

DOM-ul intermediar a făcut posibilă manipularea proprietăților foii de stil în cascadă (CSS) care afectează afișarea documentului. De asemenea, a oferit acces la o nouă proprietate numită „straturi” prin proprietățile document.layers (în Netscape Navigator ) și document.all (în Internet Explorer ). Din cauza incompatibilității inițiale în DOM-ul intermediar, dezvoltarea paginii web a necesitat o gestionare specială pentru fiecare caz.

Versiunile ulterioare ale Netscape Navigator au renunțat la suportul pentru DOM intermediar. Internet Explorer continuă să accepte DOM-ul său intermediar pentru compatibilitate cu versiunea inversă .

Standardizare

Consorțiul World Wide Web (W3C), fondat în 1994 pentru a menține și dezvolta standardele deschise ale World Wide Web , a condus Netscape Communications , Microsoft , Apple și alte companii să dezvolte un standard pentru limbaje de scriptare bazate pe browser , numit ECMAScript . Prima versiune a standardului a fost publicată în 1997 . Lansările ulterioare de JavaScript și JScript au început să implementeze standardul ECMAScript pentru o mai bună compatibilitate între browsere .

După lansarea ECMAScript , W3C a început să lucreze la standardizarea DOM. Standardul DOM original, cunoscut și sub numele de DOM Level 1, a fost recomandat de W3C la sfârșitul anului 1998 . Aproximativ în același timp, Internet Explorer 5.0 a fost lansat cu suport limitat pentru nivelul DOM 1. Nivelul DOM 1 a oferit un model de obiect complet pentru un întreg document HTML sau XML , inclusiv o modalitate de a modifica orice parte a documentului. Browserele neadaptate (de exemplu: Internet Explorer 4.x , Netscape 4.x) au fost utilizate pe scară largă până în 2000 .

Nivelul 2 DOM a fost publicat la sfârșitul anului 2000 . El a introdus funcția getElementById, precum și modelul de eveniment și suport pentru spațiul de nume XML și CSS . DOM Level 3, publicat în aprilie 2004 , a adăugat suport XPath și gestionarea evenimentelor de la tastatură , precum și o interfață pentru serializarea unui document ca XML .

În 2005 , cea mai mare parte a DOM-ului W3C a fost acceptată de browsere majore compatibile cu ECMAScript , inclusiv Internet Explorer 6.x ( 2001 ), Opera , Safari și browsere bazate pe motorul web Gecko (inclusiv Mozilla , Firefox , SeaMonkey și Camino ) .

Implementarea DOM în browsere web

Având în vedere existența diferitelor implementări ale DOM în browserele web , este un obicei comun printre programatori să verifice mai întâi funcționalitatea anumitor caracteristici DOM pentru fiecare browser în particular și abia apoi să le folosească. Codul de mai jos ilustrează o modalitate de a verifica un browser pentru suportul standardelor W3C DOM înainte de a rula cod, care depinde de rezultatul verificării respective.

if ( document . getElementById && document . getElementsByTagName ) { // dacă metodele getElementById și getElementsByTagName // sunt disponibile, atunci suportul W3CDOM este relativ sigur. obj = document . getElementById ( "navigație" ) // urmează un alt cod folosind caracteristicile W3CDOM. // …. }

Deoarece DOM este navigabil în orice zonă (de exemplu, părintele și fratele anterior) și permite modificări arbitrare - o implementare ar trebui cel puțin să tamponeze un document care (sau o formă proiectată a căruia) a fost citit până în acel moment.

Motor de browser

Articolul principal: motor de browser

Browserele se bazează pe motorul lor atunci când convertesc (parsează) fișiere HTML în DOM. Unele motoare de browser, cum ar fi Trident/MSHTML , sunt legate de un anumit browser (în acest caz, Internet Explorer ) într-un fel sau altul . Aceleași motoare ca WebKit și Gecko sunt folosite în multe browsere diferite, cum ar fi Safari , Google Chrome , RockMelt , Firefox sau Flock . Diferitele motoare de browser acceptă standardele DOM la diferite niveluri de conformitate.

Vedeți și: Comparația motoarelor de layout (Document Object Model )

Biblioteci

Niveluri W3C DOM

Nivelul actual al specificațiilor DOM este de Nivelul 2, dar unele părți ale specificațiilor de Nivelul 3 sunt recomandate de W3C.

Nivelul 0 Include toate DOM-urile specifice care existau înainte de Nivelul 1, cum ar fi document.images , document.forms , document.layers și document.all . Rețineți că aceste modele nu sunt în mod oficial specificații DOM publicate de W3C, ci mai degrabă informații despre ceea ce a existat înainte de începerea procesului de standardizare. Nivelul 1 Funcționalitatea de bază DOM (HTML și XML) în documente, cum ar fi obținerea unui arbore de noduri de document, capacitatea de a modifica și adăuga date. Nivelul 2 Suport pentru așa-numitul spațiu de nume XML <--vizualizări filtrate--> și evenimente. Nivelul 3 Constă din șase specificații diferite:
  1. DOM Nivelul 3 Core;
  2. DOM Nivelul 3 Încărcare și salvare;
  3. DOM Nivelul 3 XPath;
  4. Vizualizări și formatare DOM Nivelul 3;
  5. Cerințe DOM Nivelul 3;
  6. Validare DOM Nivel 3.
Aceste specificații sunt extensii DOM suplimentare.

Aplicații

Browsere web

Browserele web nu trebuie să utilizeze DOM pentru a reda un document HTML. Cu toate acestea, DOM-ul este necesar pentru scripturile JavaScript care doresc să observe sau să modifice o pagină web în mod dinamic. Cu alte cuvinte, Document Object Model este instrumentul prin care JavaScript vede conținutul unei pagini HTML și starea browserului.

Probleme

Din cauza incompatibilității browserului, utilizarea DOM duce uneori la dificultăți de aspect HTML și la o fiabilitate slabă a paginii.

Specificații

Vezi și

Link -uri