Document Object Model
DOM (ot angl. Document Object Model -- <
Model' DOM ne nakladyvaet ogranichenii na strukturu dokumenta. Liuboi dokument izvestnoi struktury s pomoshch'iu DOM mozhet byt' predstavlen v vide dereva uzlov, kazhdyi uzel kotorogo predstavliaet soboi element, tekstovyi, graficheskii ili liuboi drugoi ob'ekt. Uzly sviazany mezhdu soboi otnosheniiami <
Iznachal'no razlichnye brauzery imeli sobstvennye modeli dokumentov (DOM), nesovmestimye s ostal'nymi. Dlia obespecheniia vzaimnoi i obratnoi sovmestimosti spetsialisty mezhdunarodnogo konsortsiuma W3C klassifitsirovali etu model' po urovniam, dlia kazhdogo iz kotorykh byla sozdana svoia spetsifikatsiia. Vse eti spetsifikatsii ob'edineny v obshchuiu gruppu, nosiashchuiu nazvanie W3C DOM.
Eshchio odin interfeis prikladnogo programmirovaniia, nazyvaemyi JDOM, obespechivaet bolee vysokii, chem W3C DOM, uroven' dlia raboty s XML-dokumentami na Java.
Istoriia
[pravit' | pravit' kod]Istoriia DOM perepletaetsia s istoriei <<brauzernykh voin>> v kontse 1990-kh godov mezhdu Netscape Navigator i Microsoft Internet Explorer (i mezhdu pervymi skriptovymi iazykami JavaScript i JScript) za to, chtoby shiroko ispol'zovat'sia v mekhanizme viorstki veb-stranits.
Traditsionnyi DOM
[pravit' | pravit' kod]Iazyk programmirovaniia JavaScript byl vypushchen firmoi Netscape Communications v 1995 godu v ramkakh veb-brauzera Netscape Navigator 2.0. Konkurent firmy Netscape -- firma Microsoft vypustila pozzhe v tom zhe godu veb-brauzer Internet Explorer 3.0 s portom JavaScript, nazvannym JScript. JavaScript i JScript pozvoliaiut razrabotchikam sozdavat' veb-stranitsy, kotorye byli by interaktivny so storony klienta. Ogranichennye vozmozhnosti obnaruzheniia sozdavaemykh pol'zovatelem sobytii i izmeneniia dokumenta HTML v pervom pokolenii etikh iazykov v itoge stali izvestny kak <
Traditsionnyi DOM byl ogranichen v tipakh elementov, k kotorym mozhno poluchit' dostup. K takim elementam kak forma (form), ssylka (link) i izobrazhenie (image) mozhno bylo obrashchat'sia s pomoshch'iu ierarkhicheskikh imion, kotorye nachinalis' s kornia ob'ekta dokumenta. Ierarkhicheskoe imia moglo ispol'zovat' libo imia, libo posledovatel'nyi indeks obshchego elementa. Naprimer, element form input mozhet byt' dostupen kak document.formName.inputName ili kak document.forms[0].elements[0].
Traditsionnyi DOM daval vozmozhnost' podtverzhdeniia formy s klientskoi storony i populiarnyi effekt <
Promezhutochnyi DOM
[pravit' | pravit' kod]V 1997 godu firmy Netscape i Microsoft vypustili veb-brauzery, sootvetstvenno, Netscape Navigator i Internet Explorer versii 4.0, dobaviv podderzhku Dynamic HTML (DHTML), predostavliaiushchego vozmozhnost' izmeneniia funktsional'nosti HTML-dokumenta pri ego zagruzke. DHTML treboval rasshirenii dlia elementarnogo ob'ekta document, imevshegosia v traditsionnoi realizatsii DOM. Poskol'ku JScript byl osnovan na JavaScript, traditsionnye realizatsii DOM byli v znachitel'noi stepeni sovmestimy, odnako rasshireniia DOM dlia DHTML byli razrabotany parallel'no kazhdym iz sozdatelei brauzera i ostalis' nesovmestimymi. Eti versii DOM stali izvestny kak <
Promezhutochnyi DOM daval vozmozhnost' manipulirovat' svoistvami kaskadnykh tablits stilei (angl. CSS), vliiaiushchimi na otobrazhenie dokumenta. On takzhe obespechival dostup k novomu svoistvu pod nazvaniem <
Bolee pozdnie versii Netscape Navigator otkazalis' ot podderzhki promezhutochnogo DOM. Internet Explorer prodolzhaet podderzhku svoego promezhutochnogo DOM dlia obratnoi sovmestimosti.
Standartizatsiia
[pravit' | pravit' kod]Organizatsiia World Wide Web Consortium (W3C), osnovannaia v 1994 godu dlia podderzhivaniia i razvitiia otkrytykh standartov World Wide Web, zastavila Netscape Communications, Microsoft, Apple i drugie kompanii razrabotat' standart dlia brauzernykh skriptovykh iazykov pod nazvaniem ECMAScript. Pervaia versiia standarta byla opublikovana v 1997 godu. Posleduiushchie vypuski JavaScript i JScript stali realizovyvat' standart ECMAScript dlia luchshei mezhbrauzernoi sovmestimosti.
Posle vykhoda ECMAScript W3C nachala rabotu nad standartizatsiei DOM. Iznachal'nyi standart DOM, takzhe izvestnyi kak <
DOM urovnia 2 byl opublikovan v kontse 2000 goda. On vviol funktsiiu getElementById, a takzhe model' sobytii i podderzhku XML namespace i CSS. DOM urovnia 3, opublikovannaia v aprele 2004 goda, dobavila podderzhku XPath i obrabotku sobytii klaviatury, a takzhe interfeis dlia serializatsii dokumenta kak XML.
V 2005 godu bol'shaia chast' W3C DOM podderzhivalas' osnovnymi brauzerami, udovletvoriaiushchimi ECMAScript, v tom chisle Internet Explorer 6.x (2001 god), Opera, Safari i brauzerami, osnovannymi na veb-dvizhke Gecko (v tom chisle Mozilla, Firefox, SeaMonkey i Camino).
Realizatsiia DOM v veb-brauzerakh
[pravit' | pravit' kod]Uchityvaia sushchestvovanie razlichnykh realizatsii DOM v veb-brauzerakh, sredi programmistov rasprostranena privychka sperva proveriat' rabotosposobnost' tekh ili inykh vozmozhnostei DOM dlia kazhdogo konkretnogo brauzera i tol'ko potom ispol'zovat' ikh. Kod nizhe illiustriruet sposob proverki brauzera na podderzhku standartov W3C DOM pered tem, kak zapustit' kod, zavisiashchii ot rezul'tata etoi proverki.
if (document.getElementById && document.getElementsByTagName) {
// esli metody getElementById i getElementsByTagName
// dostupny, to mozhno otnositel'no tochno predpolozhit' podderzhku W3CDOM.
obj = document.getElementById("navigation")
// dalee idiot drugoi kod s ispol'zovaniem vozmozhnostei W3CDOM.
// ....
}
Tak kak DOM podderzhivaet navigatsiiu v liuboi oblasti (naprimer, roditel' i predydushchii brat) i uchityvaet proizvol'nye izmeneniia -- realizatsiia dolzhna po krainei mere buferizirovat' dokument, kotoryi (ili nekotoraia razrabotannaia forma kotorogo) chitalsia do etogo vremeni.
Brauzernyi dvizhok
[pravit' | pravit' kod]Osnovnaia stat'ia: Brauzernyi dvizhok
Brauzery opiraiutsia na svoi dvizhok, kogda proiskhodit preobrazovanie (parsing) HTML-failov v DOM. Nekotorye brauzernye dvizhki, k primeru, Trident/MSHTML, tem ili inym obrazom imeiut priviazku k opredelionnomu brauzeru (v dannom sluchae, k Internet Explorer). Takie zhe dvizhki kak WebKit i Gecko ispol'zuiutsia vo mnozhestve razlichnykh brauzerov, takikh kak Safari, Google Chrome, RockMelt, Firefox ili Flock. Razlichnye brauzernye dvizhki podderzhivaiut standarty DOM na raznykh urovniakh sootvetstviia.
Sm. takzhe: Comparison of layout engines (Document Object Model) (angl.)
Biblioteki
[pravit' | pravit' kod]Urovni W3C DOM
[pravit' | pravit' kod]Tekushchim urovnem spetsifikatsii DOM iavliaetsia Uroven' 2, no tem ne menee nekotorye chasti spetsifikatsii Urovnia 3 iavliaiutsia rekomenduemymi W3C.
- Uroven' 0
- Vkliuchaet v sebia vse spetsificheskie modeli DOM, kotorye sushchestvovali do poiavleniia Urovnia 1, naprimer, document.images, document.forms, document.layers i document.all. Neobkhodimo obratit' vnimanie, chto eti modeli formal'no ne iavliaiutsia spetsifikatsiiami DOM, opublikovannymi W3C, a skoree iavliaiutsia informatsiei o tom, chto sushchestvovalo do nachala protsessa standartizatsii.
- Uroven' 1
- Bazovye funktsional'nye vozmozhnosti DOM (HTML i XML) v dokumentakh, takie kak poluchenie dereva uzlov dokumenta, vozmozhnost' izmeniat' i dobavliat' dannye.
- Uroven' 2
- Podderzhka tak nazyvaemogo prostranstva imion XML <--filtered views--> i sobytii.
- Uroven' 3
- Sostoit iz shesti razlichnykh spetsifikatsii:
- DOM Level 3 Core;
- DOM Level 3 Load and Save;
- DOM Level 3 XPath;
- DOM Level 3 Views and Formatting;
- DOM Level 3 Requirements;
- DOM Level 3 Validation.
- Eti spetsifikatsii iavliaiutsia dopolnitel'nymi rasshireniiami DOM.
Prilozheniia
[pravit' | pravit' kod]Veb-brauzery
[pravit' | pravit' kod]Veb-brauzery ne obiazany ispol'zovat' DOM, chtoby ispolniat' HTML-dokument. Odnako DOM trebuetsia dlia skriptov JavaScript, kotorye zhelaiut nabliudat' ili izmeniat' veb-stranitsu dinamicheski. Drugimi slovami, Document Object Model -- eto instrument, s pomoshch'iu kotorogo JavaScript vidit soderzhimoe HTML-stranitsy i sostoianie brauzera.
Problemy
[pravit' | pravit' kod]Iz-za nesovmestimosti brauzerov ispol'zovanie DOM inogda privodit k trudnostiam HTML-viorstki i nizkoi nadiozhnosti stranits.
Spetsifikatsii
[pravit' | pravit' kod]- Spetsifikatsiia DOM Level 1
- Rekomendatsii W3C k Urovniu 2:
- Rekomendatsii W3C k Urovniu 3:
- Dokumenty rabochei gruppy W3C k Urovniu 3:
Sm. takzhe
[pravit' | pravit' kod]Ssylki
[pravit' | pravit' kod]- Razdel DOM na saite Konsortsiuma Vsemirnoi pautiny (W3C) (angl.)
- W3C DOM4. Perevod spetsifikatsii na russkii iazyk Arkhivnaia kopiia ot 18 ianvaria 2017 na Wayback Machine
- Doklady po DOM (angl.)
- Uchebniki po DOM (angl.)
- Kakoi uroven' DOM podderzhivaet vash brauzer? (angl.)
- Chto vkliuchaet v sebia kazhdyi uroven' DOM? (angl.)
- Skripty W3C DOM i tablitsy sovmestimosti (angl.)
- Ssylka na Gecko DOM (angl.)
- Dokumentatsiia po khtml Library API (angl.)