Dokumentobjektmodell

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 19 augusti 2022; kontroller kräver 30 redigeringar .

DOM (från den engelska  Document Object Model  - "Document Object Model") är ett plattforms- och språkoberoende programmeringsgränssnitt som tillåter program och skript att komma åt innehållet i HTML -, XHTML - och XML- dokument, samt ändra innehållet, struktur och utförande av sådana dokument.

DOM lägger inga begränsningar på strukturen av ett dokument. Alla dokument med känd struktur kan representeras med hjälp av DOM som ett träd av noder, vars varje nod är ett element, attribut, text, grafik eller något annat objekt. Noderna är länkade av en förälder-barn-relation.

Från början hade olika webbläsare sina egna dokumentmodeller (DOM), inkompatibla med resten. För att säkerställa ömsesidig och bakåtkompatibilitet klassificerade specialisterna i det internationella konsortiet W3C denna modell i nivåer, för var och en av dem skapades en egen specifikation. Alla dessa specifikationer kombineras till en gemensam grupp som kallas W3C DOM.

Ett annat applikationsprogrammeringsgränssnitt, kallat JDOM , ger ett högre lager än W3C DOM för att arbeta med Java XML-dokument .

Historik

DOM:s historia sammanflätas med historien om " webbläsarkrigen " i slutet av 1990-talet mellan Netscape Navigator och Microsoft Internet Explorer (och mellan de tidiga skriptspråken JavaScript och JScript ) för att de används i stor utsträckning i webbsideslayoutmotorn .

Traditionell DOM

Programmeringsspråket JavaScript släpptes av Netscape Communications 1995 som en del av webbläsaren Netscape Navigator 2.0 . Netscapes konkurrent Microsoft släppte Internet Explorer 3.0 senare samma år med en JavaScript - port som heter JScript . JavaScript och JScript tillåter utvecklare att skapa webbsidor som är interaktiva på klientsidan . Den begränsade möjligheten att upptäcka användarskapade händelser och modifiera HTML -dokumentet i den första generationen av dessa språk blev så småningom känd som "DOM-nivå 0" eller "traditionell DOM". Ingen oberoende standard har utvecklats för DOM-nivå 0, men den har delvis beskrivits i HTML4- specifikationen .

Den traditionella DOM var begränsad i de typer av element som kunde nås. Element som form ( form ), länk ( länk ) och bild ( bild ) kan refereras till med hierarkiska namn som började i roten av dokumentobjektet. Det hierarkiska namnet kan använda antingen namnet eller det sekventiella indexet för det gemensamma elementet. Till exempel kan ett formulärinmatningselement nås som document.formName.inputName eller som document.forms[0].elements[0].

Den traditionella DOM tillät formulärvalidering på klientsidan och den populära "objekttransformations"-effekten.

Mellanliggande DOM

1997 släppte Netscape och Microsoft webbläsare, respektive Netscape Navigator och Internet Explorer version 4.0, och lade till stöd för Dynamic HTML (DHTML), som ger möjlighet att ändra funktionaliteten hos ett HTML- dokument när det laddas. DHTML krävde tillägg till det elementära dokumentobjektet som finns i den traditionella DOM-implementeringen. Eftersom JScript baserades på JavaScript var traditionella DOM-implementeringar till stor del kompatibla, men DOM-tilläggen för DHTML utvecklades parallellt av alla webbläsarens skapare och förblev inkompatibla. Dessa versioner av DOM blev kända som "mellanliggande DOM".

Den mellanliggande DOM gjorde det möjligt att manipulera egenskaper för cascading style sheet (CSS) som påverkar visningen av dokumentet. Det gav också tillgång till en ny egenskap som kallas "lager" genom egenskaperna document.layers (i Netscape Navigator ) och document.all (i Internet Explorer ). På grund av initial inkompatibilitet i mellanliggande DOM krävde webbsidautveckling särskild hantering för varje ärende.

Senare versioner av Netscape Navigator tog bort stödet för den mellanliggande DOM. Internet Explorer fortsätter att stödja sin mellanliggande DOM för bakåtkompatibilitet .

Standardisering

World Wide Web Consortium (W3C), som grundades 1994 för att upprätthålla och utveckla de öppna standarderna för World Wide Web , ledde Netscape Communications , Microsoft , Apple och andra företag att utveckla en standard för webbläsarbaserade skriptspråk som kallas ECMAScript . Den första versionen av standarden publicerades 1997 . Efterföljande utgåvor av JavaScript och JScript började implementera ECMAScript -standarden för bättre kompatibilitet över webbläsare .

Efter lanseringen av ECMAScript började W3C arbetet med DOM-standardisering. Den ursprungliga DOM-standarden, även känd som DOM Level 1, rekommenderades av W3C i slutet av 1998 . Ungefär samtidigt släpptes Internet Explorer 5.0 med begränsat stöd för DOM nivå 1. DOM nivå 1 gav en komplett objektmodell för ett helt HTML- eller XML- dokument, inklusive ett sätt att ändra någon del av dokumentet. Oanpassade webbläsare (till exempel: Internet Explorer 4.x , Netscape 4.x) användes i stor utsträckning fram till 2000 .

DOM nivå 2 publicerades i slutet av 2000 . Han introducerade getElementById-funktionen, såväl som händelsemodellen och stöd för XML-namnutrymme och CSS . DOM Level 3, publicerad i april 2004 , lade till XPath- stöd och tangentbordshändelsehantering , samt ett gränssnitt för att serialisera ett dokument som XML .

Under 2005 stöddes det mesta av W3C DOM av stora ECMAScript -kompatibla webbläsare , inklusive Internet Explorer 6.x ( 2001 ), Opera , Safari och webbläsare baserade på Gecko webbmotor (inklusive Mozilla , Firefox , SeaMonkey och Camino ) .

Implementering av DOM i webbläsare

Med tanke på förekomsten av olika implementeringar av DOM i webbläsare är det en vanlig vana bland programmerare att först kontrollera funktionen hos vissa DOM-funktioner för varje enskild webbläsare och först sedan använda dem. Koden nedan illustrerar ett sätt att kontrollera en webbläsare för W3C DOM-standardstöd innan kod körs, vilket beror på resultatet av den kontrollen.

if ( document . getElementById && document . getElementsByTagName ) { // om metoderna getElementById och getElementsByTagName // är tillgängliga, så är W3CDOM-stöd relativt säkert. obj = dokument . getElementById ( "navigation" ) // annan kod följer med W3CDOM-funktioner. // …. }

Eftersom DOM är navigerbar i vilket område som helst (t.ex. förälder och tidigare syskon) och tillåter godtyckliga ändringar - bör en implementering åtminstone buffra ett dokument som (eller någon designad form av vilket) har lästs fram till den tiden.

Webbläsarmotor

Huvudartikel: Webbläsarmotor

Webbläsare litar på sin motor när de konverterar (parsar) HTML - filer till DOM. Vissa webbläsarmotorer, som Trident/MSHTML , är bundna till en specifik webbläsare (i det här fallet Internet Explorer ) på ett eller annat sätt . Samma motorer som WebKit och Gecko används i många olika webbläsare som Safari , Google Chrome , RockMelt , Firefox eller Flock . Olika webbläsarmotorer stöder DOM-standarder på olika nivåer av efterlevnad.

Se även: Jämförelse av layoutmotorer (Document Object Model )

Bibliotek

W3C DOM-nivåer

Den nuvarande nivån av DOM-specifikationer är nivå 2, men vissa delar av nivå 3-specifikationerna rekommenderas av W3C.

Nivå 0 Inkluderar alla specifika DOM:er som fanns före nivå 1, till exempel document.images , document.forms , document.layers och document.all . Observera att dessa modeller inte formellt är DOM-specifikationer publicerade av W3C, utan snarare information om vad som fanns innan standardiseringsprocessen startade. Nivå 1 Grundläggande DOM-funktionalitet (HTML och XML) i dokument, som att få ett träd med dokumentnoder, möjligheten att ändra och lägga till data. Nivå 2 Stöd för det så kallade XML-namnutrymmet <--filtrerade vyer--> och händelser. Nivå 3 Består av sex olika specifikationer:
  1. DOM nivå 3 kärna;
  2. DOM nivå 3 Ladda och spara;
  3. DOM nivå 3 XPath;
  4. DOM nivå 3 vyer och formatering;
  5. DOM nivå 3 krav;
  6. DOM Level 3 Validering.
Dessa specifikationer är ytterligare DOM-tillägg.

Applikationer

Webbläsare

Webbläsare behöver inte använda DOM för att rendera ett HTML-dokument. Dock krävs DOM för JavaScript- skript som vill observera eller modifiera en webbsida dynamiskt. Med andra ord är dokumentobjektmodellen verktyget som JavaScript ser innehållet på en HTML-sida och webbläsarens tillstånd med.

Problem

På grund av webbläsarinkompatibilitet leder användningen av DOM ibland till HTML-layoutsvårigheter och dålig sidas tillförlitlighet.

Specifikationer

Se även

Länkar