Π Π°Π·Π½ΠΎΠ΅

ВСхнология dom: Ρ‡Ρ‚ΠΎ это Π·Π° тСхнология Π² HTML ΠΈ JS

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Ρ‡Ρ‚ΠΎ это Π·Π° тСхнология Π² HTML ΠΈ JS

DOM β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ создаСт Π² памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π½Π° основании HTML-ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌ ΠΎΡ‚ сСрвСра. Π˜Π½Ρ‹ΠΌΠΈ словами, это прСдставлСниС HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π° Ρ‚Π΅Π³ΠΎΠ².

Π’Π°ΠΊΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ Π½ΡƒΠΆΠ½ΠΎ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ отобраТСния сайта ΠΈ внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° страницах с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript. JavaScript β€” это Β«ΠΆΠΈΠ²ΠΎΠΉΒ» язык, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ страницу Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡƒΠΆΠ΅ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Β«ΠΏΡ€ΠΈΡˆΠ»Π°Β» с сСрвСра Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€. Π­Ρ‚ΠΈΠΌ JavaScript ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ отличаСтся ΠΎΡ‚ PHP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ страницу ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ посылаСт Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ HTML-ΠΊΠΎΠ΄.

Π‘Ρ…Π΅ΠΌΠ° отобраТСния страницы Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Для чтСния ΠΈ измСнСния DOM Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ DOM API (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс). DOM API β€” это Π½Π°Π±ΠΎΡ€ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для чтСния ΠΈ измСнСния DOM с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript.

Из Ρ‡Π΅Π³ΠΎ состоит HTML-ΠΊΠΎΠ΄ страницы

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° Π½Π° HTML состоит ΠΈΠ· Ρ‚Π΅Π³ΠΎΠ², Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π² Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°. Π‘Π°ΠΌΡ‹ΠΉ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ‚Π΅Π³ β€” это HTML. Π’ Π½Π΅Π³ΠΎ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π²Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… Ρ‚Π΅Π³Π° head ΠΈ body.

Π’Π΅Π³ head ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, которая Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ нСпосрСдствСнно Π½Π° страницС, Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ΡƒΡ‚ Π±Ρ‹Π²Π°Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… CSS-Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ сайта, язык, ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°, скрипты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΈΠΊΠΎΠ½ΠΊΠ° сайта ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΠ½.

Π’ body находится Π·Π½Π°Ρ‡ΠΈΠΌΠΎΠ΅ содСрТимоС. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² body Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ Ρ‚Ρ€ΠΈ части: шапка сайта, основноС содСрТимоС ΠΈ ΠΏΠΎΠ΄Π²Π°Π». Π’ шапкС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТится Π²Π΅Ρ€Ρ…Π½Π΅Π΅ мСню сайта, Π·Π° это ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ‚Π΅Π³ header. Для содСрТимого Π½Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚Π΅Π³Π°, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ section. Для ΠΏΠΎΠ΄Π²Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ footer, Ρ‚Π°ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТатся контактная информация, ссылки Π½Π° ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ страницы сайта ΠΈ ΠΊΠΎΠΏΠΈΡ€Π°ΠΉΡ‚. Π’Π΅Π³ΠΈ header ΠΈ footer Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ СдинствСнными Π½Π° страницС, Π° section ΠΌΠΎΠΆΠ΅Ρ‚ бСсконСчно ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ.

Как строится DOM-Π΄Π΅Ρ€Π΅Π²ΠΎ

Для описания структуры DOM ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹: ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты. ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ элСмСнт находится Π² основании всСй структуры ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ элСмСнта. Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты Π½Π΅ просто находятся Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ…, Π½ΠΎ ΠΈ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ свойства ΠΎΡ‚ Π½ΠΈΡ…. На ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ DOM-Π΄Π΅Ρ€Π΅Π²ΠΎ.

DOM-Π΄Π΅Ρ€Π΅Π²ΠΎ

ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ элСмСнт здСсь html β€” Π±Π΅Π· Π½Π΅Π³ΠΎ страница Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ скомпилирована. Он Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ (Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅Π³ΠΎ) элСмСнта, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° наслСдника ΠΈΠ»ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнта β€” head ΠΈ body.

По ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ элСмСнты head ΠΈ body ΡΠ²Π»ΡΡŽΡ‚ΡΡ сиблингами (Π±Ρ€Π°Ρ‚ΡŒΡΠΌΠΈ ΠΈ сСстрами). Π’ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π²Π»ΠΎΠΆΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов. НапримСр, Π² head ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ находятся link, meta, script ΠΈΠ»ΠΈ title.

ВсС эти Ρ‚Π΅Π³ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎ нСсколько экзСмпляров ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ….

Π’ body ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ элСмСнты. НапримСр, Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ body β€” Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ элСмСнт header, Π² элСмСнтС header β€” Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ элСмСнт section, Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ section β€” Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ div, Π² div β€” элСмСнт h4, ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π² h4 β€” элСмСнт span. Π’ этом случаС span Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов, Π½ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚.

МоТно ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ это Ρ‚Π°ΠΊ:

ГрафичСскоС прСдставлСниС элСмСнтов HTML-страницы

А Ссли Π±Ρ‹ систСма Π±Ρ‹Π»Π° Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ развСтвлСнная ΠΈ с большим количСством Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” Ρ‚Π°ΠΊ:

ГрафичСскоС прСдставлСниС элСмСнтов HTML-страницы

На схСмС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ довольно большоС DOM-Π΄Π΅Ρ€Π΅Π²ΠΎ, ΠΈ Π΅Π³ΠΎ слоТно Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈΠ·-Π·Π° Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Для удобства часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ систСма ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… списков. НапримСр, ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΉ список:

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов HTML-страницы Π² Π²ΠΈΠ΄Π΅ списка

Если ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ рисункС Π² ΠΊΠΎΠ΄, Ρ‚ΠΎ получится Ρ‚Π°ΠΊ:<HTML> <head> <link> <link> <link> <meta> <meta> <title></title> </head> <body> <header> <div> <h4></h4> </div> <div> <h5> <span></span> </h5> </div> <div> <p></p> </div> <div> <img> </div> </header> <section> <div> <h4></h4> <p> <span></span> </p> </div> <div> <p> <span></span> </p> <img> <p></p> <div> <img> <iframe></iframe> </div> </div> </section> <footer> <div> <img> <p></p> </div> <div> <h6></h6> </div> </footer> </body> </HTML>

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΊΠΎΠ΄Π°, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π΅Π³ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ β€” Π½Π΅Ρ‚.

Π­Ρ‚Ρƒ схСму Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с Ρ‚Π΅ΠΌΠΎΠΉ наслСдования свойств. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ всС, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ свойства своих Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ†Π²Π΅Ρ‚, ΡˆΡ€ΠΈΡ„Ρ‚, Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ Ρ‚.Π΄.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚Π° Π½Π° всСй страницС, потрСбуСтся Π½Π΅ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта, Π° Π·Π°Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для body. А Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ наслСдуСмоС свойство Ρƒ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ элСмСнта, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅ΠΌΡƒ Π½ΠΎΠ²Ρ‹Π΅ свойства. НаслСдованиС ΡƒΠ΄ΠΎΠ±Π½ΠΎ для создания Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ страницы.

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ строится DOM-Π΄Π΅Ρ€Π΅Π²ΠΎ?

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дСйствий ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с DOM сводится ΠΊ поиску Π½ΡƒΠΆΠ½Ρ‹Ρ… элСмСнтов. НС понимая, ΠΊΠ°ΠΊ строится DOM-Π΄Π΅Ρ€Π΅Π²ΠΎ, ΠΈ Π½Π΅ зная, ΠΊΠ°ΠΊΠΎΠ²Ρ‹ связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ, Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½Ρ‹ΠΉ элСмСнт Π±ΡƒΠ΄Π΅Ρ‚ слоТно.

Как ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ DOM-Π΄Π΅Ρ€Π΅Π²ΠΎ?

Π’ любом Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π΅ΡΡ‚ΡŒ инструмСнты, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ DOM-Π΄Π΅Ρ€Π΅Π²ΠΎ. Если Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² структурС, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ подсвСчСн Π½Π° страницС. ΠŸΡ€ΠΈ этом для Π½Π΅Π³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ свойства CSS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ сСйчас, ΠΈ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ задСйствованы.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ DOM Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΉΡ‚ΠΈ Π² инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² для этого Π½Π°Π΄ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° F12 β€” Ρ‚ΠΎΠ³Π΄Π° откроСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ панСль с Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌΠΈ ΠΈ Π·ΠΎΠ½Π°ΠΌΠΈ.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ DOM-Π΄Π΅Ρ€Π΅Π²Π° Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

На ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π²Ρ‹ΡˆΠ΅ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Elements прСдставлСна структура DOM Π² Π²ΠΈΠ΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ списка. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ, Π΅Π³ΠΎ располоТСниС Π½Π° страницС ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ этого элСмСнта со всСми отступами.

Π’Π°ΠΊΠΆΠ΅ Ρ‚Π°ΠΌ находятся Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ консоль, Π³Π΄Π΅ выводится информация ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ ΠΊΡƒΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ввСсти Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ (исправлСния ошибок Π² ΠΊΠΎΠ΄Π΅).

ПанСль рСсурсов ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ рСсурсы β€” это ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, изобраТСния, JavaScript- ΠΈ CSS-Ρ„Π°ΠΉΠ»Ρ‹.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ DOM ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½?

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ: ΠΊΠ°ΠΊ создаётся Π²Π΅Π±-страница Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ DOM ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½, ΠΊΠ°ΠΊ строится DOM-Π΄Π΅Ρ€Π΅Π²ΠΎ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΈΠΏΡ‹ ΡƒΠ·Π»ΠΎΠ² ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Как создаётся Π²Π΅Π±-страница?

Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€, ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ страницу, выполняСт большоС количСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… дСйствий. Π‘Π°ΠΌΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ здСсь ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с HTML-страницСй Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊΠ°ΠΊ с тСкстом, Π° строит для этого DOM.

DOM – это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (Document Object Model). ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ ΠΎΠ½Π° собой Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру страницы, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· ΡƒΠ·Π»ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π² Π½Π΅ΠΉ – это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π˜Π½Ρ‹ΠΌΠΈ словами, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ DOM – это Π½Π°Π±ΠΎΡ€ иСрархичСски связанных ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π—Π°Ρ‡Π΅ΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ строит DOM? Π’ основном это связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹ΠΉ HTML-ΠΊΠΎΠ΄ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² памяти ΠΈ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ структуры. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ построил DOM, ΠΎΠ½ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… процСссах, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся построСния отобраТСния этой страницы Π½Π° экранС.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° HTML-ΠΊΠΎΠ΄Π° страницы Π² DOM выполняСт парсСр. ΠŸΡ€ΠΈ этом ΠΎΠ½ это Π΄Π΅Π»Π°Π΅Ρ‚ Π΄Π°ΠΆΠ΅ Ссли HTML-ΠΊΠΎΠ΄ содСрТит ошибки, Π½ΠΎ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это Β«ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Β».

ΠŸΡ€ΠΈ этом DOM Π½Π΅ являСтся статичСской структурой. Π•Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ эти измСнСния Π½Π° экранС. Для этого Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π°ΠΌ прСдоставляСт API. Π’ΠΎ Π΅ΡΡ‚ΡŒ благодаря DOM, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ содСрТимоС страницы Π½Π° Π»Π΅Ρ‚Ρƒ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, JavaScript – это ΠΊΠ»ΡŽΡ‡Π΅Π²Π°Ρ тСхнология для создания динамичСских Π²Π΅Π±-сайтов ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘Π΅Π· Π½Π΅Ρ‘, ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… способом это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ DOM, рассмотрим сначала всС основныС этапы Ρ€Π°Π±ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ выполняСт для прСобразования исходного ΠΊΠΎΠ΄Π° HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ стилизованной ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π½Π° экранС. ΠšΡΡ‚Π°Ρ‚ΠΈ, этот процСсс называСтся Critical Rendering Path (CRP).

Π¨Π°Π³ΠΈ CRP:

Π₯отя этот процСсс состоит ΠΈΠ· большого количСства шагов, ΠΈΡ… Π³Ρ€ΡƒΠ±ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΡƒΡ…:

  1. АнализируСт HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½Π° страницС;
  2. ВыполняСт отрисовку Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ этапа являСтся Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²Π° Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° (render tree). Π”Π°Π½Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ содСрТит Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ элСмСнты ΠΈ тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½Π° страницС, ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ связанныС с Π½ΠΈΠΌΠΈ стили. Π­Ρ‚ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅Ρ‚ структуру DOM, Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ элСмСнты. Π’ render tree ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт содСрТит ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DOM ΠΈ рассчитанныС для Π½Π΅Π³ΠΎ стили. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, render tree описываСт Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС DOM.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ Π½ΡƒΠΆΠ½Ρ‹ Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ:

  • DOM, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ· ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ HTML-ΠΊΠΎΠ΄Π°;
  • CSSOM (CSS Object Model), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ строит ΠΈΠ· Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΈ распознанных стилСй.

На Π²Ρ‚ΠΎΡ€ΠΎΠΌ этапС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ выполняСт отрисовку render tree. Для этого ΠΎΠ½:

  • рассчитываСт ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² render tree, этот шаг называСтся Layout;
  • выполняСт рисованиС, этот шаг называСтся Paint.

ПослС Paint всС нарисованныС элСмСнты находятся Π½Π° ΠΎΠ΄Π½ΠΎΠΌ слоС. Для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ страницы Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ выполняСт Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ шаг, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся Composite. Π’ Π½Π΅ΠΌ ΠΎΠ½ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅Ρ‚ элСмСнты ΠΏΠΎ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ слоям. ИмСнно благодаря этому этапу ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π° страницС ΠΏΠ»Π°Π²Π½ΡƒΡŽ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ элСмСнтов ΠΏΡ€ΠΈ использовании Ρ‚Π°ΠΊΠΈΡ… свойств ΠΊΠ°ΠΊ transform, opacity. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ этих свойств Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ Composite.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со слоями Π² Chrome Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт Layers.

НапримСр, измСнСния свойства color Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ сначала Π·Π°Π΄Π°Ρ‡Ρƒ Paint, Π° Π·Π°Ρ‚Π΅ΠΌ вСроятнСС всСго послСдуСт Composite всСх Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹Ρ… элСмСнтов.

ИзмСнСниС width Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ: Layout -> Paint -> Composite.

Layout ΠΈ Paint – это рСсурсоСмкиС процСссы, поэтому для Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ отзывчивости вашСй страницы ΠΈΠ»ΠΈ Π²Π΅Π±-прилоТСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ свСсти ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ… Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚.

Бписок свойств, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Paint:

  • color;
  • background;
  • visibility;
  • border-style ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Бписок свойств, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Layout:

  • width ΠΈ height;
  • padding ΠΈ margin;
  • display;
  • border;
  • top, left, right ΠΈ bottom;
  • position;
  • font-size ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

ΠšΡ€ΠΎΠΌΠ΅ этого, Layout срабатываСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ CSS-свойств, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ смСщСниС элСмСнта (el.offsetLeft, el.offsetTop ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅) ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (el.clientLeft, el.clientTop ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… случаях. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с этими опСрациями ΠΌΠΎΠΆΠ½ΠΎ здСсь.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ свойство, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ css-triggers для Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π° VS Code:

Π§Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ DOM?

DOM – это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ΅ прСдставлСниС исходного HTML-ΠΊΠΎΠ΄Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. ΠŸΡ€ΠΎΡ†Π΅ΡΡ формирования DOM происходит Ρ‚Π°ΠΊ: Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ HTML-ΠΊΠΎΠ΄, парсит Π΅Π³ΠΎ ΠΈ строит DOM.

Π—Π°Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΈ Π²Ρ‹ΡˆΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ DOM (Π° Π½Π΅ исходный HTML) для ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Π° Π΄Π΅Ρ€Π΅Π²Π° Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°, ΠΏΠΎΡ‚ΠΎΠΌ выполняСт layout ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² этом случаС просто HTML? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ HTML – это тСкст, ΠΈ с Π½ΠΈΠΌ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ. Для этого Π½ΡƒΠΆΠ½ΠΎ Π΅Π³ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π° Π΅Π³ΠΎ основС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€. И этим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ являСтся DOM.

Π˜Ρ‚Π°ΠΊ, DOM – это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ создаёт Π² памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π½Π° основании HTML-ΠΊΠΎΠ΄Π°.

По-простому, HTML-ΠΊΠΎΠ΄ – это тСкст страницы, Π° DOM – это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, созданный Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ ΠΏΡ€ΠΈ парсингС этого тСкста.

Но, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ DOM Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для выполнСния процСсса CRP, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт Π½Π°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ доступ ΠΊ Π½Π΅ΠΌΡƒ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ DOM.

DOM – это тСхнология Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΈ JavaScript. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с DOM. НапримСр, Ρ€Π°Π±ΠΎΡ‚Π° с DOM ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ сСрвСрными скриптами, послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ парсинга ΠΈΠΌΠΈ HTML-страницы. Но это Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ другая Ρ‚Π΅ΠΌΠ° ΠΈ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ здСсь.

ВсС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдоставляСт Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ описаны Π² спСцификации HTML DOM API, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ W3C. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½ΠΈΡ… ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² памяти Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.

НапримСр, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ:

  • Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ HTML-элСмСнты Π½Π° страницС, Π² Ρ‚ΠΎΠΌ числС ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ стили;
  • ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌΠΈ;
  • Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ HTML-события Π½Π° страницС ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅;
  • Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ Π½Π° HTML-элСмСнтС <canvas> ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ DOM Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ шагам CRP ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ обновляСт ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ страницы. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρƒ нас всСгда отрисовка страницы соотвСтствуСт DOM.

Благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ JavaScript позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ DOM, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ динамичСскиС ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π²Π΅Π±-прилоТСния ΠΈ сайты. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ всё Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° страницС. БСйчас Π² Π²Π΅Π±Π΅ практичСски Π½Π΅Ρ‚ сайтов, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π°Π±ΠΎΡ‚Π° с DOM.

Π’ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Chrome исходный HTML-ΠΊΠΎΠ΄ страницы, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«SourceΒ» Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Β«Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Β»:

На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Elements ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅ Π½Π° DOM:

Однако DevTools Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ сюда Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚ Π² DOM. ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ этого ΡΠ²Π»ΡΡŽΡ‚ΡΡ псСвдоэлСмСнты Π² CSS. ΠŸΡΠ΅Π²Π΄ΠΎΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹, созданныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сСлСкторов ::before ΠΈ ::after, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ CSSOM ΠΈ Π΄Π΅Ρ€Π΅Π²Π° Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°, ΠΈ тСхничСски Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ DOM. ΠœΡ‹ с Π½ΠΈΠΌΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ посрСдством JavaScript.

По Ρ„Π°ΠΊΡ‚Ρƒ DOM создаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· исходного HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ псСвдоэлСмСнты. Но Π² инспСкторС элСмСнтов DevTools ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ.

Как строится DOM?

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ DOM, сначала вспомним, Ρ‡Ρ‚ΠΎ собой прСдставляСт исходный HTML-ΠΊΠΎΠ΄ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

<!doctype html>
<html lang="ru">
<head>
  <title>Моя страница</title>
</head>
<body>
  <h2>ΠœΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ОБ</h2>
  <ul>
    <li>Android</li>
    <li>iOS</li>
  </ul>
</body>
</html>

Как Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ – это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ тСкстовый Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. Π•Π³ΠΎ ΠΊΠΎΠ΄ состоит ΠΈΠ· Ρ‚Π΅Π³ΠΎΠ², Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², тСкста, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎΠΉ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ Π² Π½Ρ‘ΠΌ являСтся HTML-элСмСнт. На Π½ΠΈΡ… всё строится. HTML-элСмСнт Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв состоит ΠΈΠ· ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π΅Π³ΠΎΠ², ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ располагаСтся Π΅Π³ΠΎ содСрТимоС. НапримСр, HTML-элСмСнт h2 ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Π΅Π³ <h2>, Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ </h2> ΠΈ содСрТимоС «Моя страница». ΠšΡ€ΠΎΠΌΠ΅ этого, Ρ‚Π΅Π³ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ посрСдством Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ². Π’ этом ΠΊΠΎΠ΄Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ имССтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ HTML-элСмСнта <html>.

Π’Π°ΠΊΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² HTML-ΠΊΠΎΠ΄Π΅ ΠΎΠ΄Π½ΠΈ элСмСнты Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅. НапримСр, <h2> Π²Π»ΠΎΠΆΠ΅Π½ Π² <body>, Π° <body> Π² <html>. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ваТная концСпция, которая Π½Π°ΠΌ ΠΈ позволяСт Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ Π² HTML.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим, ΠΊΠ°ΠΊ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π° основании HTML-ΠΊΠΎΠ΄Π° строит DOM. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ структура DOM прСдставляСт собой Π΄Π΅Ρ€Π΅Π²ΠΎ ΡƒΠ·Π»ΠΎΠ² (ΡƒΠ·Π΅Π» Π½Π° английском называСтся node). ΠŸΡ€ΠΈ этом DOM-ΡƒΠ·Π»Ρ‹ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΈΠ· всСго, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² HTML: Ρ‚Π΅Π³ΠΎΠ², тСкстового ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ Ρ‚.Π΄.

ΠšΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ ΡƒΠ·Π»ΠΎΠΌ DOM-Π΄Π΅Ρ€Π΅Π²Π° являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ document, ΠΎΠ½ прСдставляСт сам этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. Π”Π°Π»Π΅Π΅ Π² Π½Ρ‘ΠΌ располоТСн ΡƒΠ·Π΅Π» <html>. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ этот элСмСнт Π² ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ:

const elHTML = document.documentElement;

Π’ <html> находятся 2 ΡƒΠ·Π»Π°-элСмСнта: <head> ΠΈ <body>. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ:

const elHead = document.head;
const elBody = document.body;

Π’ <head> находится DOM-ΡƒΠ·Π΅Π» <title>:

// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ <title> ΠΈ присвоим Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ elTitle
const elTitle = document.title;

Π’ <title> находится тСкстовый ΡƒΠ·Π΅Π». Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ <body>. Π’ Π½Ρ‘ΠΌ находятся 2 элСмСнта <h2> ΠΈ <ul>, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ΠŸΡ€ΠΈ этом, ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠΆΠ΅ поняли, ΡƒΠ·Π»Ρ‹ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ дСлятся Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹. Π’ DOM Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚:

  • ΡƒΠ·Π΅Π», ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ собой вСсь Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚; этим ΡƒΠ·Π»ΠΎΠΌ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ document; ΠΎΠ½ выступаСт Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π² DOM;
  • ΡƒΠ·Π»Ρ‹, ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ‚Π΅Π³Π°ΠΌΠΈ, ΠΈΡ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΡƒΠ·Π»Π°ΠΌΠΈ-элСмСнтами ΠΈΠ»ΠΈ просто элСмСнтами;
  • тСкстовыС ΡƒΠ·Π»Ρ‹, ΠΎΠ½ΠΈ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ тСкстом Π²Π½ΡƒΡ‚Ρ€ΠΈ элСмСнтов;
  • ΡƒΠ·Π»Ρ‹-ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΡƒΠ·Π»ΠΎΠ², Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрСчислСнныС Π²Ρ‹ΡˆΠ΅.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π² Π΄Π΅Ρ€Π΅Π²Π΅ DOM являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Но ΠΏΡ€ΠΈ этом Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ структуру DOM Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ·Π»Ρ‹-элСмСнты. ВСкстовыС ΡƒΠ·Π»Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, содСрТат Π² сСбС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСкст. Они Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡƒΠ·Π»Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ вся Ρ€Π°Π±ΠΎΡ‚Π° с DOM Π² основном связана с ΡƒΠ·Π»Π°ΠΌΠΈ-элСмСнтами.

ΠšΡΡ‚Π°Ρ‚ΠΈ, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° <!doctype html> Ρ‚ΠΎΠΆΠ΅ являСтся DOM-ΡƒΠ·Π»ΠΎΠΌ. Но ΠΎΠ½Π° Π½Π°ΠΌ Π½Π΅ интСрСсна, поэтому Π½Π° схСмС ΠΌΡ‹ Π΅Ρ‘ опустили.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡƒΠ·Π»Π°ΠΌ DOM-Π΄Π΅Ρ€Π΅Π²Π° Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ. Зная ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Бвязи ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΈΡ… Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π² DOM ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ:

  • Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ – это ΡƒΠ·Π΅Π», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ нСпосрСдствСнно располоТСн; ΠΏΡ€ΠΈ этом Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Ρƒ ΡƒΠ·Π»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½; Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ·Π΅Π» ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ родитСля, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠΌ являСтся document;
  • Π΄Π΅Ρ‚ΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΡƒΠ·Π»Ρ‹ – это всС ΡƒΠ·Π»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны нСпосрСдствСнно Π² Π½Ρ‘ΠΌ; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠ·Π΅Π» <ul> ΠΈΠΌΠ΅Π΅Ρ‚ 2 Π΄Π΅Ρ‚Π΅ΠΉ;
  • сосСди ΠΈΠ»ΠΈ сиблинги – это ΡƒΠ·Π»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ родитСля Ρ‡Ρ‚ΠΎ ΠΈ этот ΡƒΠ·Π΅Π»;
  • ΠΏΡ€Π΅Π΄ΠΊΠΈ – это Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Π΅Π³ΠΎ родитСля ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅;
  • ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ – это всС ΡƒΠ·Π»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² Π½Π΅ΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ это Π΅Π³ΠΎ Π΄Π΅Ρ‚ΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π΅Ρ‚ΠΈ Π΅Π³ΠΎ Π΄Π΅Ρ‚Π΅ΠΉ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

НапримСр, ΡƒΠ·Π΅Π»-элСмСнт <h2> ΠΈΠΌΠ΅Π΅Ρ‚ Π² качСствС родитСля <body>. Π Π΅Π±Π΅Π½ΠΎΠΊ Ρƒ Π½Π΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ – это тСкстовый ΡƒΠ·Π΅Π» Β«ΠœΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ОБ». БосСд Ρƒ Π½Π΅Π³ΠΎ Ρ‚ΠΎΠΆΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ – это <ul>.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим, ΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ тСкстовый ΡƒΠ·Π΅Π» Β«iOSΒ». Π£ Π½Π΅Π³ΠΎ ΠΎΠ½ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅: <li>, <ul>, <body> ΠΈ <html>.

Π£ элСмСнта <head> 2 ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°: <title> ΠΈ тСкстовый ΡƒΠ·Π΅Π» «Моя страница».

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ строится DOM-Π΄Π΅Ρ€Π΅Π²ΠΎ? Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, это ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠΉ срСды, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дСйствий ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с DOM сводится ΠΊ поиску Π½ΡƒΠΆΠ½Ρ‹Ρ… элСмСнтов. Но Π½Π΅ зная ΠΊΠ°ΠΊ устроСно DOM-Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ, Π½Π°ΠΉΡ‚ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² Π½Ρ‘ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ достаточно Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Задания

1. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ DOM-Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² HTML-ΠΊΠΎΠ΄:

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‚Π΅ΠΌΠ°: Π£Π·Π»Ρ‹ DOM-Π΄Π΅Ρ€Π΅Π²Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°?

Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹
Π”ΠΆΠΎΠ½Π°Ρ‚Π°Π½ Π ΠΎΠ±ΠΈ, Texcel Research

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (DOM) β€” это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ API для HTML ΠΈ
XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Он опрСдСляСт Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ структуру Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ
способ доступа ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΈ манипулирования ΠΈΠΌ. Π’ спСцификации DOM
Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Β» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ смыслС β€” XML всС Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС
способ прСдставлСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚
Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… систСмах, ΠΈ большая Ρ‡Π°ΡΡ‚ΡŒ этого Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ
Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅, Π° Π½Π΅ ΠΊΠ°ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, XML прСдставляСт
эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΈ DOM ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для управлСния этими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π‘ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ
ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль, программисты ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ
ΠΈΡ… структуру, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты ΠΈ содСрТимоС.
МоТно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ всСму, Ρ‡Ρ‚ΠΎ находится Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ HTML ΠΈΠ»ΠΈ XML,
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹, ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°,
Π·Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ β€” Π² частности, DOM-интСрфСйсы для
Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ подмноТСство ΠΈ внСшнСС подмноТСство Π΅Ρ‰Π΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹.

Π’ спСцификации W3C ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°
ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ стандартный ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ
ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² самых Ρ€Π°Π·Π½Ρ‹Ρ… срСдах ΠΈ прилоТСниях.
ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм.
язык. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ ΠΎΡ‚ языка ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ
интСрфСйсов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ
спСцификации Π² OMG IDL, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π² CORBA 2.2
БпСцификация.
Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ спСцификации OMG IDL,
ΠΌΡ‹ прСдоставляСм языковыС привязки для Java ΠΈ ECMAScript (
стандартный отраслСвой язык сцСнариСв Π½Π° основС JavaScript ΠΈ
JScript). ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. OMG IDL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ нСзависимая ΠΎΡ‚ языка ΠΈ
нСзависимый ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ способ указания интСрфСйсов. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅
МоТно Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ IDL; использованиС OMG IDL Π½Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚
Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ срСду выполнСния привязки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° β€” это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ API для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².
Π‘Π°ΠΌΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° структуру
Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ. НапримСр, рассмотрим эту Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π²Π·ΡΡ‚ΡƒΡŽ
ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° HTML:

 <Π’ΠΠ‘Π›Π˜Π¦Π>
      <БВРОКИ>
      
      ВСнистая Ρ€ΠΎΡ‰Π°
      Эолийский
      
      
      Π—Π° Ρ€Π΅ΠΊΠΎΠΉ, Π§Π°Ρ€Π»ΠΈ
      Π”ΠΎΡ€ΠΈΠ°Π½
      
      
      
     

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° прСдставляСт эту Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:



DOM-прСдставлСниС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹


Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ логичСский
структура, ΠΎΡ‡Π΅Π½ΡŒ похоТая Π½Π° Π΄Π΅Ρ€Π΅Π²ΠΎ; Ссли Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Π΅Π΅, Ρ‚ΠΎ
ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ «лСсу» ΠΈΠ»ΠΈ Β«Ρ€ΠΎΡ‰Π΅Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚
ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°. Однако ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°
Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ
Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈΠ»ΠΈ Ρ€ΠΎΡ‰Π°, Π½ΠΈ
ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ½, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ связаны ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ?
Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² любом случаС. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль
опрСдСляСт Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ модСль для интСрфСйса программирования ΠΈ
эта логичСская модСль ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π»ΡŽΠ±Ρ‹ΠΌ способом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ
конкрСтная рСализация Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ. Π’ этом
спСцификации, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ модСль конструкции Π΄ΠΎ
ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠ΅ прСдставлСниС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°; ΠΌΡ‹
ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΈΡ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ², ΠΊΠ°ΠΊ Β«Π΄Π΅Ρ€Π΅Π²ΠΎΒ» ΠΈΠ»ΠΈ
Β«Ρ€ΠΎΡ‰Π°Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅
Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Одно Π²Π°ΠΆΠ½ΠΎΠ΅ свойство ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ структуры DOM
являСтся структурным ΠΈΠ·ΠΎΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ : Ссли Π»ΡŽΠ±Ρ‹Π΅ Π΄Π²Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°
Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для создания прСдставлСния
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΎΠ½ΠΈ создадут ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ модСль структуры,
с Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ.

НазваниС Β«ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Β» Π±Ρ‹Π»ΠΎ Π²Ρ‹Π±Ρ€Π°Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ
это Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ
смысл ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π°: Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с использованиСм
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΈ модСль ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ структуру
Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Π½ΠΎ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ состоит. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΡƒΠ·Π»Ρ‹ Π²
привСдСнная Π²Ρ‹ΡˆΠ΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ прСдставляСт структуру Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ½ΠΈ
ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ. Как
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚:

  • интСрфСйсы ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для прСдставлСния ΠΈ управлСния
    Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚
  • сСмантика этих интСрфСйсов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π² Ρ‚ΠΎΠΌ числС
    ΠΊΠ°ΠΊ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹
  • ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΈ сотрудничСство ΠΌΠ΅ΠΆΠ΄Ρƒ этими интСрфСйсами
    ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² SGML Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ
прСдставлСна ​​абстрактной модСлью Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ модСлью.
Π’ абстрактной ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… модСль сосрСдоточСна Π²ΠΎΠΊΡ€ΡƒΠ³
Π΄Π°Π½Π½Ρ‹Π΅. Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках программирования сами Π΄Π°Π½Π½Ρ‹Π΅
инкапсулируСтся Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅, защищая ΠΈΡ…
ΠΎΡ‚ прямых Π²Π½Π΅ΡˆΠ½ΠΈΡ… манипуляций. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, связанныС с
эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ
ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² настоящСС врСмя состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй:
DOM Core ΠΈ DOM HTML. Π―Π΄Ρ€ΠΎ DOM прСдставляСт собой
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ слуТит
основа для DOM HTML. ВсС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ DOM Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ
интСрфСйсы, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ Β«Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅Β» Π² спСцификации Core;
ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ XML Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ интСрфСйсы
ΡƒΠΊΠ°Π·Π°Π½ ΠΊΠ°ΠΊ Β«Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉΒ» Π² спСцификации Core. Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 1
БпСцификация DOM HTML опрСдСляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
трСбуСтся для HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π§Π΅ΠΌ Π½Π΅ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π» ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ понимания
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, отличая Π΅Π΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ…
систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ Π½Π° это.

  • Π₯отя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ ΠΏΠΎΠ΄ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌ влияниСм
    динамичСским HTML, Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ 1 ΠΎΠ½ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ всС
    ДинамичСский HTML. Π’ частности, события Π΅Ρ‰Π΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹.
    Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 1 ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ‡Π½ΡƒΡŽ основу для Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°
    Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, прСдоставляя Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ ΠΈ Π³ΠΈΠ±ΠΊΡƒΡŽ модСль
    сам Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π΅ являСтся Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ спСцификациСй. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚
    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, написанныС Π½Π° ΠΎΠ΄Π½ΠΎΠΌ языкС, Π±ΡƒΠ΄ΡƒΡ‚
    исходный ΠΊΠΎΠ΄ совмСстим Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, Π½ΠΎ Document
    ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π½Π΅ опрСдСляСт ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ Ρ„ΠΎΡ€ΠΌΡƒ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ
    ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ.
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π΅ являСтся способом сохранСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
    Π² XML ΠΈΠ»ΠΈ HTML. ВмСсто указания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ
    прСдставлСнная Π² XML, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° опрСдСляСт, ΠΊΠ°ΠΊ
    Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ XML ΠΈ HTML прСдставлСны Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², поэтому
    ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ….
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π΅ являСтся Π½Π°Π±ΠΎΡ€ΠΎΠΌ структур Π΄Π°Π½Π½Ρ‹Ρ…,
    это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ интСрфСйсы. Π₯отя это
    Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ содСрТит Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ/ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ,
    это логичСскиС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ
    интСрфСйсы, Π° Π½Π΅ прСдставлСния ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ…
    структуры Π΄Π°Π½Π½Ρ‹Ρ….
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π΅ опрСдСляСт «истинный
    внутрСнняя сСмантика» XML ΠΈΠ»ΠΈ HTML. Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ° этих
    языки ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ самими языками.
    ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° β€” это модСль программирования, прСдназначСнная для
    ΡƒΠ²Π°ΠΆΠ°ΠΉΡ‚Π΅ эту сСмантику. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π΅
    ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ послСдствия для Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ XML ΠΈ HTML
    Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹; любой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написан Π½Π° этих языках
    ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, нСсмотря Π½Π° своС Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π½Π΅ являСтся
    ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (COM). COM, ΠΊΠ°ΠΊ
    CORBA β€” это нСзависимый ΠΎΡ‚ языка способ указания интСрфСйсов ΠΈ
    ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹; ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° прСдставляСт собой Π½Π°Π±ΠΎΡ€ интСрфСйсов ΠΈ
    ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для управлСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ HTML ΠΈ XML. Π”ΠΎΠΌ
    ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ с использованиСм нСзависимых ΠΎΡ‚ языка систСм, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ COM
    ΠΈΠ»ΠΈ ΠšΠžΠ Π‘Π; это Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ с использованиСм спСцифичных для языка
    привязки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ привязки Java ΠΈΠ»ΠΈ ECMAScript, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²
    этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.

ΠžΡ‚ΠΊΡƒΠ΄Π° взялась ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΊΠ°ΠΊ спСцификация для
ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ сцСнариям JavaScript ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Java Π±Ρ‹Ρ‚ΡŒ пСрСносимыми ΠΌΠ΅ΠΆΠ΄Ρƒ
Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹. ДинамичСский HTML Π±Ρ‹Π» нСпосрСдствСнным ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ
Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль, ΠΈ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ
с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ². Однако, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°
Π‘Ρ‹Π»Π° сформирована рабочая Π³Ρ€ΡƒΠΏΠΏΠ°, ΠΊ Π½Π΅ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈΡΡŒ Π²Π΅Π½Π΄ΠΎΡ€Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ…
Π΄ΠΎΠΌΠ΅Π½Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ HTML ΠΈΠ»ΠΈ XML ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹
Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. НСкоторыС ΠΈΠ· этих поставщиков Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с SGML.
Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ XML; Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°
находился ΠΏΠΎΠ΄ влияниСм SGML Groves ΠΈ стандарта HyTime. НСкоторый
ΠΈΠ· этих поставщиков Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ свои собствСнныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ для
Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для прСдоставлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… API для SGML/XML
Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈΠ»ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΈ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚
Ρ‚Π°ΠΊΠΆΠ΅ повлияла Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Бущности ΠΈ DOM Core

Π’ основных интСрфСйсах DOM Π½Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…
сущности. Бсылки Π½Π° числовыС символы ΠΈ ссылки Π½Π°
ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² HTML ΠΈ XML Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ
ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ составляСт Π·Π°ΠΌΠ΅Π½Ρƒ сущности.
НапримСр, Π²:

Π­Ρ‚ΠΎ собака & кошка

Β«&Β»
Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½ символом Β«&Β», Π°
тСкст Π² элСмСнтС

Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ
ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π³Π΅Π½Π΅Ρ€Π°Π»Π°
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΈ внСшниС, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π²
Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ (XML) интСрфСйсы спСцификации уровня 1.
ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Когда DOM-прСдставлСниС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° сСриализуСтся
ΠΊΠ°ΠΊ тСкст XML ΠΈΠ»ΠΈ HTML, прилоТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ
символ Π² тСкстовых Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ Π΅Π³ΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
с использованиСм числового ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. НС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этого
ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСдопустимому HTML ΠΈΠ»ΠΈ XML.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ DOM ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ DOM

DOM опрСдСляСт интСрфСйсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для управлСния XML ΠΈΠ»ΠΈ
HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ эти интСрфСйсы
ΡΠ²Π»ΡΡŽΡ‚ΡΡ абстракциСй β€” Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ «абстрактныС Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы» Π² C++,
ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ срСдством опрСдСлСния способа доступа ΠΈ манипулирования
Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π’
частности, интСрфСйсы Π½Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ
Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. КаТдоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ DOM ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ бСсплатно.
Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² любом ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ прСдставлСнии, лишь Π±Ρ‹
интСрфСйсы, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² этой спСцификации, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ. НСкоторый
РСализациями DOM Π±ΡƒΠ΄ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅
Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ DOM для доступа ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ, написанному Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ
БпСцификация DOM сущСствовала. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, DOM Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½
Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ зависимостСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ; Π² частности,

  1. Атрибуты, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² IDL, Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ
    ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ элСмСнты Π΄Π°Π½Π½Ρ‹Ρ… β€” Π²
    языковыС привязки, ΠΎΠ½ΠΈ пСрСводятся Π² ΠΏΠ°Ρ€Ρƒ
    get()/set(), Π° Π½Π΅ Ρ‡Π»Π΅Π½Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния
    Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ get() Π² языкС
    привязки).
  2. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ DOM ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ интСрфСйсы
    ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ Π² этой спСцификации, ΠΈ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄ΡƒΡ‚
    считаСтся совмСстимым с DOM.
  3. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ интСрфСйсы, Π° Π½Π΅ фактичСскиС
    ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ созданы, DOM Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ
    конструкторы для Π²Ρ‹Π·ΠΎΠ²Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ,
    ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ DOM Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ createXXX() Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅.
    класс для создания структур Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ DOM
    Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ свои собствСнныС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ прСдставлСния
    этих структур Π² ΠΈΡ… рСализациях
    Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ createXXX().

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня

БпСцификация DOM уровня 1 Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°
Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для прСдставлСния ΠΈ управлСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ
структура ΠΈ содСрТаниС.
Π‘ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ спСцификации DOM обСспСчат:

  1. Бтруктурная модСль для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ подмноТСства ΠΈ
    внСшнСС подмноТСство.
  2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎ схСмС.
  3. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй.
  4. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ доступа.
  5. Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°?

REC-DOM-Level-1-19981001

Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹
Π”ΠΆΠΎΠ½Π°Ρ‚Π°Π½ Π ΠΎΠ±ΠΈ, Texcel Research

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (DOM) β€” это интСрфСйс ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ программирования (API) для HTML ΠΈ
XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Он опрСдСляСт Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ структуру Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ
способ доступа ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΈ манипулирования ΠΈΠΌ. Π’ спСцификации DOM
Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Β» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ смыслС β€” XML всС Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС
способ прСдставлСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚
Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… систСмах, ΠΈ большая Ρ‡Π°ΡΡ‚ΡŒ этого Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ
Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅, Π° Π½Π΅ ΠΊΠ°ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, XML прСдставляСт
эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΈ DOM ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для управлСния этими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π‘ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ
ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль, программисты ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ
ΠΈΡ… структуру, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты ΠΈ содСрТимоС.
МоТно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ всСму, Ρ‡Ρ‚ΠΎ находится Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ HTML ΠΈΠ»ΠΈ XML,
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹, ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°,
Π·Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ β€” Π² частности, DOM-интСрфСйсы для
Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΈ внСшниС подмноТСства XML Π΅Ρ‰Π΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹.

Π’ спСцификации W3C ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°
ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ стандартный ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ
ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² самых Ρ€Π°Π·Π½Ρ‹Ρ… срСдах ΠΈ прилоТСниях.
DOM ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для использования с Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
язык. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ ΠΎΡ‚ языка ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ
интСрфСйсов DOM ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ
спСцификации Π² OMG IDL, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π² CORBA 2.2
БпСцификация.
Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ спСцификации OMG IDL,
ΠΌΡ‹ прСдоставляСм языковыС привязки для Java ΠΈ ECMAScript (
стандартный отраслСвой язык сцСнариСв Π½Π° основС JavaScript ΠΈ
JScript). ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. OMG IDL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ нСзависимая ΠΎΡ‚ языка ΠΈ
нСзависимый ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ способ указания интСрфСйсов. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅
МоТно Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ IDL. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, IDL ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для
ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ срСды. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°
ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² любой Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ срСдС ΠΈ Π½Π΅
трСбуСтся срСда выполнСния привязки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ связанная с
Ρ‚Π°ΠΊΠΈΠ΅ Π˜Π”Π›.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

DOM β€” это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ API для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².
Он ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° структуру
Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ. НапримСр, рассмотрим эту Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π²Π·ΡΡ‚ΡƒΡŽ
ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° HTML:

      <Π’ΠΠ‘Π›Π˜Π¦Π>
      
      
      ВСнистая Ρ€ΠΎΡ‰Π°
      Эолийский
      
      
      Π—Π° Ρ€Π΅ΠΊΠΎΠΉ, Π§Π°Ρ€Π»ΠΈ
      Π”ΠΎΡ€ΠΈΠ°Π½
      
      
      
     

DOM прСдставляСт эту Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:



DOM-прСдставлСниС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹


Π’ DOM Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ
структура, ΠΎΡ‡Π΅Π½ΡŒ похоТая Π½Π° Π΄Π΅Ρ€Π΅Π²ΠΎ; Ссли Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Π΅Π΅, Ρ‚ΠΎ
ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ «лСсу» ΠΈΠ»ΠΈ Β«Ρ€ΠΎΡ‰Π΅Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚
ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π”ΠžΠœ.
Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ
Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈΠ»ΠΈ Ρ€ΠΎΡ‰Π°, Π½ΠΈ
ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ½, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ связаны ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ?
Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ. DOM β€” это логичСская модСль, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² любой
ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ. Π’ этом
спСцификации, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ модСль конструкции Π΄ΠΎ
ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠ΅ прСдставлСниС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°; ΠΌΡ‹
ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΈΡ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ², ΠΊΠ°ΠΊ Β«Π΄Π΅Ρ€Π΅Π²ΠΎΒ» ΠΈΠ»ΠΈ
Β«Ρ€ΠΎΡ‰Π°Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅
Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Одно Π²Π°ΠΆΠ½ΠΎΠ΅ свойство ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ структуры DOM
являСтся структурным ΠΈΠ·ΠΎΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ : Ссли Π»ΡŽΠ±Ρ‹Π΅ Π΄Π²Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°
Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для создания прСдставлСния
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΎΠ½ΠΈ создадут ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ модСль структуры,
с Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ.

НазваниС Β«ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Β» Π±Ρ‹Π»ΠΎ Π²Ρ‹Π±Ρ€Π°Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ
это Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль» Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ
смысл ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π°: Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с использованиСм
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΈ модСль ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ структуру
Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Π½ΠΎ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ состоит. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΡƒΠ·Π»Ρ‹ Π²
привСдСнная Π²Ρ‹ΡˆΠ΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ прСдставляСт структуру Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ½ΠΈ
ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ. Как
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль, DOM ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚:

  • интСрфСйсы ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для прСдставлСния ΠΈ управлСния
    Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚
  • сСмантика этих интСрфСйсов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π² Ρ‚ΠΎΠΌ числС
    ΠΊΠ°ΠΊ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹
  • ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΈ сотрудничСство ΠΌΠ΅ΠΆΠ΄Ρƒ этими интСрфСйсами
    ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² SGML Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ
прСдставлСна ​​абстрактной модСлью Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ модСлью.
Π’ абстрактной ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… модСль сосрСдоточСна Π²ΠΎΠΊΡ€ΡƒΠ³
Π΄Π°Π½Π½Ρ‹Π΅. Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках программирования сами Π΄Π°Π½Π½Ρ‹Π΅
инкапсулируСтся Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅, защищая ΠΈΡ…
ΠΎΡ‚ прямых Π²Π½Π΅ΡˆΠ½ΠΈΡ… манипуляций. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, связанныС с
эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ
ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² настоящСС врСмя состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй:
DOM Core ΠΈ DOM HTML. Π―Π΄Ρ€ΠΎ DOM прСдставляСт собой
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ слуТит
основа для DOM HTML.
Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ рСализация DOM Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ всС
Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ интСрфСйсы Π² Π³Π»Π°Π²Π΅ Core с сСмантикой ΠΊΠ°ΠΊ
ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½Ρƒ ΠΈΠ· HTML DOM.
ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ (XML) интСрфСйсы с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ сСмантикой.

Π§Π΅ΠΌ Π½Π΅ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π» ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ понимания
DOM, отличая Π΅Π³ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ…
систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ Π½Π° это.

  • Π₯отя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ ΠΏΠΎΠ΄ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌ влияниСм
    «ДинамичСский HTMLΒ» Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ 1 Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ всС
    «ДинамичСский HTMLΒ». Π’ частности, события Π΅Ρ‰Π΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹.
    Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 1 ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ‡Π½ΡƒΡŽ основу для Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°
    Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, прСдоставляя Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ ΠΈ Π³ΠΈΠ±ΠΊΡƒΡŽ модСль
    сам Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π΅ являСтся Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ спСцификациСй.
    DOM-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π½Π° ΠΎΠ΄Π½ΠΎΠΌ языкС, Π±ΡƒΠ΄ΡƒΡ‚
    исходный ΠΊΠΎΠ΄ совмСстим Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, Π½ΠΎ DOM
    Π½Π΅ опрСдСляСт ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ Ρ„ΠΎΡ€ΠΌΡƒ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ взаимодСйствия.
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π΅ являСтся способом сохранСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
    Π² XML ΠΈΠ»ΠΈ HTML. ВмСсто указания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ
    прСдставлСнный Π² XML, DOM ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ
    Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ XML ΠΈ HTML прСдставлСны Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², поэтому
    ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ….
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π΅ являСтся Π½Π°Π±ΠΎΡ€ΠΎΠΌ структур Π΄Π°Π½Π½Ρ‹Ρ…,
    это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ интСрфСйсы. Π₯отя это
    Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ содСрТит Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ/ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ,
    это логичСскиС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ
    интСрфСйсы, Π° Π½Π΅ прСдставлСния ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ…
    структуры Π΄Π°Π½Π½Ρ‹Ρ….
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π΅ опрСдСляСт «истинный
    внутрСнняя сСмантика» XML ΠΈΠ»ΠΈ HTML. Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ° этих
    языки ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ РСкомСндациями W3C для этих языков.
    DOM β€” это модСль программирования, прСдназначСнная для
    ΡƒΠ²Π°ΠΆΠ°ΠΉΡ‚Π΅ эту сСмантику. DOM Π½Π΅
    ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ послСдствия для Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ XML ΠΈ HTML
    Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹; любой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написан Π½Π° этих языках
    ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны Π² DOM.
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, нСсмотря Π½Π° своС Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π½Π΅ являСтся
    ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (COM). COM, ΠΊΠ°ΠΊ
    CORBA β€” это нСзависимый ΠΎΡ‚ языка способ указания интСрфСйсов ΠΈ
    ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹; DOM прСдставляСт собой Π½Π°Π±ΠΎΡ€ интСрфСйсов ΠΈ
    ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для управлСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ HTML ΠΈ XML. Π”ΠΎΠΌ
    ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ с использованиСм нСзависимых ΠΎΡ‚ языка систСм, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ COM
    ΠΈΠ»ΠΈ ΠšΠžΠ Π‘Π; это Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ с использованиСм спСцифичных для языка
    привязки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ привязки Java ΠΈΠ»ΠΈ ECMAScript, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²
    этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.

ΠžΡ‚ΠΊΡƒΠ΄Π° взялась ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

МодСль DOM Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΊΠ°ΠΊ спСцификация для
ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ сцСнариям JavaScript ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Java Π±Ρ‹Ρ‚ΡŒ пСрСносимыми ΠΌΠ΅ΠΆΠ΄Ρƒ
Π’Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹. «ДинамичСский HTMLΒ» Π±Ρ‹Π» нСпосрСдствСнным ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ
Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль, ΠΈ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ
с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ². Однако, ΠΊΠΎΠ³Π΄Π° Π”ΠžΠœ
Рабочая Π³Ρ€ΡƒΠΏΠΏΠ° Π±Ρ‹Π»Π° сформирована Π² W3C, ΠΊ Π½Π΅ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈΡΡŒ Π²Π΅Π½Π΄ΠΎΡ€Ρ‹ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ…
Π΄ΠΎΠΌΠ΅Π½Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ HTML ΠΈΠ»ΠΈ XML ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹
Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. НСкоторыС ΠΈΠ· этих поставщиков Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с SGML.
Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ XML; Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π”ΠžΠœ
находился ΠΏΠΎΠ΄ влияниСм SGML Groves ΠΈ стандарта HyTime. НСкоторый
ΠΈΠ· этих поставщиков Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ свои собствСнныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ для
Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² для прСдоставлСния API для SGML/XML
Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈΠ»ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΈ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚
Ρ‚Π°ΠΊΠΆΠ΅ повлияли Π½Π° DOM.

Бущности ΠΈ DOM Core

Π’ основных интСрфСйсах DOM Π½Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…
сущности. Бсылки Π½Π° числовыС символы ΠΈ ссылки Π½Π°
ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² HTML ΠΈ XML Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ
ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ составляСт Π·Π°ΠΌΠ΅Π½Ρƒ сущности.
НапримСр, Π²:

        

Π­Ρ‚ΠΎ собака & ΠΊΠΎΡ‚

Β«&Β» Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½ символом Β«&Β», Π° тСкст
Π² элСмСнтС P Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΡƒΡŽ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
пСрсонаТи. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ числовыС ссылки Π½Π° символы ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹
Π½Π΅ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… CDATA ΠΈΠ»ΠΈ Π² SCRIPT ΠΈ STYLE
элСмСнты Π² HTML, ΠΎΠ½ΠΈ Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ символом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ΠΈ
каТСтся, ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π°. Если Π±Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±Ρ‹Π» Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² CDATA
Ρ€Π°Π·Π΄Π΅Π» Β«&Β» Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π° Β«&Β»; Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚

распознаСтся ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚Π΅Π³. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π³Π΅Π½Π΅Ρ€Π°Π»Π°
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΈ внСшниС, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π²
Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ (XML) интСрфСйсы спСцификации уровня 1.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Когда DOM-прСдставлСниС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° сСриализуСтся
ΠΊΠ°ΠΊ тСкст XML ΠΈΠ»ΠΈ HTML, прилоТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ
символ Π² тСкстовых Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ Π΅Π³ΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
с использованиСм числового ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. НС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этого
ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСдопустимому HTML ΠΈΠ»ΠΈ XML. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ
извСстно ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сСриализация Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ символов
(Β«Π½Π°Π±ΠΎΡ€ символов»), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ISO 10646, ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ сбой, Ссли Π΅ΡΡ‚ΡŒ
символы Π² Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ CDATA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π²
ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ DOM ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ DOM

DOM опрСдСляСт интСрфСйсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для управлСния XML ΠΈΠ»ΠΈ
HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ эти интСрфСйсы
ΡΠ²Π»ΡΡŽΡ‚ΡΡ абстракциСй β€” Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ «абстрактныС Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы» Π² C++,
ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ срСдством опрСдСлСния способа доступа ΠΈ манипулирования
Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹
Π½Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ
Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. КаТдоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ DOM ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ бСсплатно.
Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² любом ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ прСдставлСнии, лишь Π±Ρ‹
интСрфСйсы, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² этой спСцификации, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ. НСкоторый
РСализациями DOM Π±ΡƒΠ΄ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅
Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ DOM для доступа ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ, написанному Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ
БпСцификация DOM сущСствовала. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, DOM Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½
Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ зависимостСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ; Π² частности,

  1. Атрибуты, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² IDL, Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ
    ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ элСмСнты Π΄Π°Π½Π½Ρ‹Ρ… β€” Π²
    языковыС привязки, ΠΎΠ½ΠΈ пСрСводятся Π² ΠΏΠ°Ρ€Ρƒ
    get()/set(), Π° Π½Π΅ Ρ‡Π»Π΅Π½Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния
    Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ get() Π² языкС
    привязки).
  2. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ DOM ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ интСрфСйсы
    ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ Π² этой спСцификации, ΠΈ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄ΡƒΡ‚
    считаСтся совмСстимым с DOM.
  3. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ интСрфСйсы, Π° Π½Π΅ фактичСскиС
    ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ созданы, DOM Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ
    конструкторы для Π²Ρ‹Π·ΠΎΠ²Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ,
    ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ DOM Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ createXXX() Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅.
    класс для создания структур Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ DOM
    Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ свои собствСнныС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ прСдставлСния
    этих структур Π² ΠΈΡ… рСализациях
    Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ createXXX().

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ уровня 1

БпСцификация DOM уровня 1 Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°
Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для прСдставлСния ΠΈ управлСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ
структура ΠΈ содСрТаниС.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *