Մասնակից:Նանե Մելիքսեթյան/Ավազարկղ5
DOM (անգլ.՝ Document Object Model` «փաստաթղթի օբյեկտային մոդել»), իրենից ներկայացոնւմ է անկախ ծրագրային ինտերֆեյս է, որը թույլ է տալիս ծրագրերին և սկրիպտներին մուտք գործել HTML, XHTML և XML փաստաթղթերի բովանդակություն, ինչպես նաև փոփոխել այդ փաստաթղթերի բովանդակությունը, կառուցվածքը և ձևավորումը։
DOM մոդելը չի սահմանափակում փաստաթղթերի կառուցվածքը։Dom-ի միջոցով հայտնի կառույցի ցանկացած փաստաթուղթ կարող է ներկայացվել որպես հանգույցների ծառ, որի յուրաքանչյուր հանգույցը իրենից ներկայացնում է տարր, հատկանիշ, տեքստային, գրաֆիկական կամ ցանկացած այլ օբյեկտ: Հանգույցները միմյանց հետ կապված են «ծնող-դուստր» հարաբերություններով։
Ի սկզբանե տարբեր բրաուզերներ ունեին փաստաթղթերի սեփական մոդելները (DOM), որոնք անհամատեղելի էին մյուսների հետ։ Փոխադարձ և հետադարձ համատեղելիության ապահովման համար W3C միջազգային կոնսորցիումի մասնագետները դասակարգել են այս մոդելը ըստ մակարդակների, որոնցից յուրաքանչյուրի համար ստեղծվել է իր դասակարգումը։ Այս բոլոր առանձնահատկությունները միավորված են W3C DOM անունը կրող ընդհանուր խմբում:
Մեկ այլ ծրագրավորաման ինտերֆեյս, որը կոչվում է JDOM, ապահովում է ավելի բարձր մակարդակ Java-ում XML փաստաթղթերի հետ աշխատելու համար, քան W3C DOM-ն է։
Պատմություն խմբագրել
DOM-ի պատմությունը միահյուսվում է 1990-ականների վերջին «բրաուզերային պատերազմների» պատմությանը, Netscape Navigator-ի և Microsoft Internet Explorer-ի (և առաջին սկրիպտային լեզուներ JavaScript-ի և JScript-ի) միջև, վեբ-էջերի շարադրման մեխանիզմում լայնորեն օգտագործելու համար։
Ավանդական DOM խմբագրել
Javascript ծրագրավորման լեզուն թողարկվել է Netscape Communication ընկերության կողմից 1995 թվականին, որպես Netscape Navigator 2.0 վեբ բրաուզերի մաս։ Netscape-ի մրցակից [[Մայքրոսոֆթ|Microsoft]] ընկերությունը նույն տարում թողարկեց Internet Explorer 3.0 JavaScript պորտով, որը կոչվում է JScript: Javascript-ը և JScript-ը թույլ են տալիս ծրագրավորողներին ստեղծել վեբ-կայքեր, որոնք ինտերակտիվ են հաճախորդի կողմից։ Օգտատիրոջ կողմից ստեղծված իրադարձությունները հայտնաբերելու և այս լեզուների առաջին սերնդում html փաստաթուղթը փոփոխելու անսահմանափակ հնարավորությունը, ի վերջո, հայտնի դարձան որպես «DOM Level 0» կամ «Ավանդական DOM»։ «DOM մակարդակ 0»-ի համար ոչ մի հատուկ ստանդարտներ չկային, այն մասամբ նկարագրված է HTML4 բնութագրում։
Ավանդական DOM-ը սահմանափակված էր տարրերի տեսակներով, որոնց կարելի էր մուտք գործել։ Այնպիսի տարրեր, ինչպիսիք են ձևը (form), հղումը (link) և պատկերը (image), կարելի է մուտք գործել հիերարխիկ անունների միջոցով, որոնք սկսվել էին փաստաթղթի արմատից։ Հիերարխիկ անունը կարող է օգտագործել կամ անունը, կամ տարրի հերթական ինդեքսը։ Օրինակ, form input տարրը կարող է հասանելի լինել որպես document.formName.inputName կամ որպես document.forms[0].elements[0]:
Ավանդական DOM-ը հնարավորություն էր տալիս հաճախորդի մասի ձևի հաստատում և հայտնի «transformation object» էֆեկտը։
Միջանկյալ DOM խմբագրել
1997 թվականին Netscape-ը և Microsoft-ը թողարկեցին իրենց վեբ բրաուզերները՝ Netscape Navigator և Internet Explorer 4.0 համապատասխանաբար՝ ավելացնելով Dynamic HTML (DHTML) աջակցությունը, որն ապահովում է HTML փաստաթղթի ֆունկցիոնալությունը փոխելու հնարավորություն, երբ այն բեռնվում է: DHTML-ը պահանջում էր ընդլայնումներ փաստաթղթի պարզ օբյեկտի համար, որը գտնվել է ավանդական DOM-ի իրականացման մեջ: Քանի որ JScript-ը հիմնված էր JavaScript-ի վրա, ավանդական DOM-ի իրականացումները հիմնականում փոխգործունակ էին, սակայն DHTML DOM ընդլայնումները մշակվում էին զուգահեռաբար բրաուզերներից յուրաքանչյուրի կողմից և մնացին անհամատեղելի: DOM-ի այս տարբերակները հայտնի են դարձել որպես «միջանկյալ DOM»:
Միջանկյալ DOM-ը հնարավորություն տվեց մանիպուլյացիայի ենթարկել կասկադային ոճի թերթիկների (անգլ. CSS) հատկությունները՝ ազդելով փաստաթղթի ցուցադրման վրա։ Այն նաև ապահովում էր մուտք դեպի նոր հատկություն, որը կոչվում է layers՝ document.layers (Netscape Navigator-ում) և document.all (Internet Explorer-ում) հատկությունների միջոցով: Միջանկյալ DOM-ում նախնական անհամատեղելիությունների պատճառով վեբ մշակումը պահանջում էր հատուկ մշակում յուրաքանչյուր դեպքի համար:
Netscape Navigator-ի հետագա տարբերակները դադարեցրին միջանկյալ DOM-ի աջակցությունը: Internet Explorer-ը շարունակում է աջակցել իր միջանկյալ DOM-ին հետադարձ համատեղելիության համար:
Ստանդարտացում խմբագրել
1994 թվականին ստեղծված World Wide Web Consortium (W3C) կազմակերպությունը World Wide Web-ի բաց չափորոշիչը պահպանելու և զարգացնելու համար հարկադրեց Netscape Communications, Microsoft, Էփլ և այլ ընկերություններին մշակելու բրաուզերի վրա հիմնված սկրիպտային լեզուների չափորոշիչ՝ ECMAScript անվամբ։ Չափորոշչի առաջին տարբերակը հրապարակվել է 1997 թվականին։ Javascript-ի և [[JScript|JScript-ի] հետագա թողարկումները սկսեցին կիրառել ECMAScript չափորոշիչը՝ ավելի լավ բրաուզերների համատեղելիության համար: ECMAScript-ի թողարկումից հետո W3C-ն սկսեց աշխատել DOM-ի ստանդարտացման վրա։ DOM-ի սկզբնական չափորոշիչը, որը նաև հայտնի է որպես DOM մակարդակ 1, 1998 թվականի վերջին առաջարկվել է W3C-ի կողմից։ Մոտավորապես մինույն թողարկվեց Internet Explorer 5․0-ն՝ DOM 1-ին մակարդակի սահմանափակ աջակցությամբ: DOM 1-ին մակարդակը տրամադրեց ամբողջական օբյեկտի մոդել ամբողջ HTML կամ XML փաստաթղթի համար, ներառյալ փաստաթղթի ցանկացած մաս փոխելու հնարավորություն: Չհարմարեցված բրաուզերները (օրինակ՝ Internet Explorer 4.x, Netscape 4.x) լայնորեն օգտագործվում էին մինչև 2000 թվականը։
DOM-ի մակարդակ 2-ը հրապարակվել է 2000 թվականի վերջին։ Նա ներկայացրեց getElementById ֆունկցիան, ինչպես նաև իրադարձությունների մոդելը և աջակցությունը XML namespace-ի և CSS-ի համար: DOM մակարդակ 3-ը, որը հրապարակվել է 2004 թվականի ապրիլին, ավելացրել է XPath-ի աջակցություն և ստեղնաշարի իրադարձությունների մշակում, ինչպես նաև ինտերֆեյս՝ փաստաթուղթը XML-ով սերիականացման համար:
2005 թվականին W3C DOM-ի մեծ մասն ապահովվում էր ECMAScript-ին համապատասխանող հիմնական բրաուզերների կողմից, ներառյալ Internet Explorer 6.x (2001 թվական), Opera, Safari և Gecko վեբ-շարժիչի վրա հիմնված բրաուզերները (ներառյալ Mozilla, Firefox, SeaMonkey և Camino):
DOM-ի իրականացումը վեբ-բրաուզերներում խմբագրել
Հաշվի առնելով վեբ բրաուզերներում DOM-ի տարբեր իրականացումների առկայությունը, ծրագրավորողների շրջանում սովորական սովորություն է նախ ստուգել DOM-ի որոշ գործառույթների ֆունկցիոնալությունը յուրաքանչյուր կոնկրետ բրաուզերի համար և միայն դրանից հետո օգտագործել դրանք: Ստորև բերված կոդը ցույց է տալիս W3C DOM ստանդարտների համար բրաուզերը վավերացնելու միջոց՝ նախքան կոդ գործարկելը, որը կախված է այդ վավերացման արդյունքից:
if (document.getElementById && document.getElementsByTagName) {
// если методы getElementById и getElementsByTagName
// доступны, то можно относительно точно предположить поддержку W3CDOM.
obj = document.getElementById("navigation")
// далее идёт другой код с использованием возможностей W3CDOM.
// ….
}
Եվս մեկ կոդի օրինակ գրված Javascript լեզվով, որը թույլ է տալիս փորձարկել DOM-ի տարբեր ընդլայնումների համար հայտարարված աջակցությունը որոշակի վեբ-բրաուզերում:
function domImplementationTest(){
var featureArray = ['HTML', 'XML', 'Core', 'Views',
'StyleSheets', 'CSS', 'CSS2', 'Events',
'UIEvents', 'MouseEvents', 'HTMLEvents',
'MutationEvents', 'Range', 'Traversal'];
var versionArray = ['1.0', '2.0', '3.0'];
var i;
var j;
if(document.implementation && document.implementation.hasFeature){
for(i=0; i < featureArray.length; i++){
for(j=0; j < versionArray.length; j++){
document.write(
'Поддержка расширения '+ featureArray[i] + ' версии ' + versionArray[j] + ': ' +
(document.implementation.hasFeature(featureArray[i], versionArray[j]) ?
'<span style="color:green">true</span>': '<span style="color:red">false</span>') + '<br/>'
);
}
document.write('<br/>');
}
}
}
Քանի որ DOM-ն աջակցում է նավիգացիան դեպի ցանկացած տարածք (օրինակ՝ ծնող և նախորդ եղբայրը կամ քույրը) և ընդունում է կամայական փոփոխություններ, իրականացումը պետք է առնվազն բուֆերացնի փաստաթուղթը, որը (կամ որի մշակված ձևը) կարդացվել է մինչ այս անգամ:
Բրաուզերի շարժիչ խմբագրել
Բրաուզերները հենվում են իրենց շարժիչի վրա՝ HTML ֆայլերը DOM-ին փոխարկելիս (վերլուծելիս): Որոշ բրաուզերի շարժիչներ, օրինակ՝ Trident / MSHTML, ինչ-որ կերպ կապված են որոշակի բրաուզերի հետ (այս դեպքում՝ Internet Explorer): Շարժիչներ, ինչպիսիք են WebKit-ը և Gecko-ն, օգտագործվում են բազմաթիվ տարբեր բրաուզերներում, ինչպիսիք են Safari-ը, Google Chrome-ը, RockMelt-ը, Firefox-ը կամ Flock-ը: Բրաուզերի տարբեր շարժիչներ աջակցում են DOM չափորոշիչներին հետևողականության տարբեր մակարդակներում:
W3C DOM մակարդակներ խմբագրել
DOM-ի ներկայիս դասակարգման մակարդակը համարվում է մակարդակ 2-ը, բայց մակարդակ 3-ի որոշ դասակարգումներ խորհուրդ է տրվում W3C-ի կողմից։
Մակարդակ 0 Ներառում է իր մեջ DOM-ի բոլոր մոդելների դասակարգումները, որոնք գոյություն ունեին մինչ մակարդակը 1-ը, օրինակ, document.images, document.forms, document.layers և document.all։ Անհրաժեշտ է ուշադրություն դարձնել, որ այս մոդելները պաշտոնապես չեն համարվում W3C-ի կողմից հրապարակված DOM-ի դասակարգումներ։ Դրանք տեղեկություն են այն մասին, թե ինչ է գոյություն ունեցել մինչ դասակարգման գործընթացը։ Մակարդակ 1 DOM-ի (HTML և XML) բազային ֆունկցիոնալ հնարավորություննրը փաստաթղթերում, այնպիսին են ինչպիսին փաստաթղթի ծառի հանդույցները՝ տվյալներ փոփոխելու և ավելացնելու հնարավորությամբ։ Մակարդակ 2 Այսպես կոչված XML <--filtered views--> անվանատարածքի աջակցություն և իրադարձություններ։ Մակարդակ 3 Կազմված է 6 բազմազան դասակարգումներից։
- 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.
- Դասակարգումները համարվում են DOM-ի լրացուցիչ ընդլայնումներ։
Հավելվածներ խմբագրել
վեբ-բրաուզերներ խմբագրել
Վեբ-բրաուզերները պարտավոր չեն օգտագործել DOM՝ HTML փաստաթուղթը օգտագործելու համար։ Այնուամենայնիվ, DOM-ը պահանջվում է JavaScript սկրիպտների համար, որոնք ցանկանում են դինամիկ կերպով դիտել կամ փոփոխել վեբ էջը: Այլ կերպ ասած, Document Object Model-ը այն գործիքն է, որով JavaScript-ը տեսնում է HTML էջի բովանդակությունը և բրաուզերի վիճակը:
Խնդիրներ խմբագրել
Բրաուզերի անհամատեղելիության պատճառով DOM-ի օգտագործումը երբեմն հանգեցնում է HTML դասավորության դժվարությունների և էջի ցածր հուսալիության:
Դասակարգում խմբագրել
- Դասակարգում DOM Մակարդակ 1
- W3C-ի առաջարկություններ 2-րդ մակարդակի համար.
- W3C-ի առաջարկություններ 3-րդ մակարդակի համար.
- W3C աշխատանքային խմբի փաստաթղթեր 3-րդ մակարդակի համար.
Տես նաև խմբագրել
Արտաքին հղումներ խմբագրել
- Համաշխարհային ցանցի կոնսորցիումի (W3C) կայքի DOM բաժինը (անգլ.)
- W3C DOM4. Դասակարգման թարգմանությունը ռուКакой уровень DOM поддерживает ваш браузер?սերեն
- Հաշվետվություններ DOM-ի վերաբերյալ(անգլ.)
- DOM ձեռնարկներ(անգլ.)
- Ո՞ր DOM մակարդակն է աջակցում ձեր բրաուզերը:(անգլ.)
- Ի՞նչ է ներառում յուրաքանչյուր DOM մակարդակ:(անգլ.)
- W3C DOM սկրիպտներ և համատեղելիության աղյուսակներ(անգլ.)
- Հղում դեպի Gecko DOM(անգլ.)
- khtml Library API-ի փաստաթղթավորում(անգլ.)