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 .
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 .
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”.
Î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ă .
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 ) .
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.
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 )
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: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.
Din cauza incompatibilității browserului, utilizarea DOM duce uneori la dificultăți de aspect HTML și la o fiabilitate slabă a paginii.
Consorțiul World Wide Web (W3C) | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Produse și standarde |
| ||||||||||||||
Organizații |
| ||||||||||||||
PE |
| ||||||||||||||
Conferințe |
|
Web și site-uri web | |
---|---|
la nivel global | |
La nivel local | |
Tipuri de site-uri și servicii |
|
Creare si intretinere | |
Tipuri de machete, pagini, site-uri | |
Tehnic | |
Marketing | |
Societate și cultură |