DOM – objektový model dokumentu II. – procházení dokumentem

Diskuze čtenářů k článku

avatar
25. 12. 2020 21:31

Článek starý 12 let. Nezměnilo se něco, minimálně ohledně podpory v prohlížečích?

Souhlasím  |  Nesouhlasím  |  Odpovědět
jozo  |  13. 02. 2002 16:29

Ak to myslite s DOM vazne tak si nainstaluje mozilu (NS6) je to totiz jedimy browser v ktorom funguje 70% modulov z DOM1,2,(3). A mozilla ma este naviac DOM inspector, JS console a debugger.

pre porovnanie je tu tabulka:
Mozilla IE6.(5)
DOM1 100% 50%
DOM2 70% 0%
DOM3 0% 0%
1+2+3 40% 3%
1+2 75% 6%

tu je skript na zistenie: (funguje lem v IE6, NS6, Mozilla)
(staci zavolat funkciu dom() napr v: , a v CSS mat triedy: .dom1, .dom2, .dom3 ale to nemusi byt)
IE5 ma ciastocne implementovany DOM1

//
// DOM1
// XML, HTML
// DOM2
// Core, XML, HTML, Views, StyleSheets, CSS, CSS2, Events,
// UIEvents, MouseEvents, MutationEvents, HTMLEvents, Range, Traversal
// DOM3
// Core, XML, Events, UIEvents, MouseEvents, TextEvents, MutationEvents,
// HTMLEvents, LS, AS-EDIT, XPath
//
var domModules = new Array(3);

domModules[0] = new Array('XML','HTML');
domModules[1] = new Array('Core', 'XML', 'HTML', 'Views', 'StyleSheets', 'CSS', 'CSS2', 'Events', 'UIEvents', 'MouseEvents', 'MutationEvents', 'HTMLEvents', 'Range', 'Traversal');
domModules[2] = new Array('Core', 'XML', 'Events', 'UIEvents', 'MouseEvents', 'TextEvents', 'MutationEvents', 'HTMLEvents', 'LS', 'AS-EDIT', 'XPath');

function dom() {
var i,j
var text = new String;
var div, div_text;

for(i = 0;i < domModules.length;i++) {
for(j = 0;j < domModules[i].length;j++) {
if(document.implementation.hasFeature(domModules[i][j],(i + 1) + '.0'))
text = domModules[i][j] + ': YES\n';
else text = domModules[i][j] + ': NO\n';
div = document.createElement("div")
div.setAttribute('class','dom' + (i + 1));
div_text = document.createTextNode(text)
div.appendChild(div_text)
document.body.appendChild(div)
}
}
}


Souhlasím  |  Nesouhlasím  |  Odpovědět
a_lien  |  14. 02. 2002 06:09

He?

Souhlasím  |  Nesouhlasím  |  Odpovědět
jozo  |  13. 02. 2002 16:26

Ak to myslite s DOM vazne tak si nainstaluje mozilu (NS6) je to totiz jedimy browser v ktorom funguje 70% modulov z DOM1,2,(3). A mozilla ma este naviac DOM inspector, JS console a debugger.

pre porovnanie je tu tabulka:
Mozilla IE6.(5)
DOM1 100% 50%
DOM2 70% 0%
DOM3 0% 0%
1+2+3 40% 3%
1+2 75% 6%

tu je skript na zistenie: (funguje lem v IE6, NS6, Mozilla)
(staci zavolat funkciu dom() napr v: >body onload="dom()"<, a v CSS mat triedy: .dom1, .dom2, .dom3 al to nemusi byt)
IE5 ma ciastocne implementovany DOM1

//
// DOM1
// XML, HTML
// DOM2
// Core, XML, HTML, Views, StyleSheets, CSS, CSS2, Events,
// UIEvents, MouseEvents, MutationEvents, HTMLEvents, Range, Traversal
// DOM3
// Core, XML, Events, UIEvents, MouseEvents, TextEvents, MutationEvents,
// HTMLEvents, LS, AS-EDIT, XPath
//
var domModules = new Array(3);

domModules[0] = new Array('XML','HTML');
domModules[1] = new Array('Core', 'XML', 'HTML', 'Views', 'StyleSheets', 'CSS', 'CSS2', 'Events', 'UIEvents', 'MouseEvents', 'MutationEvents', 'HTMLEvents', 'Range', 'Traversal');
domModules[2] = new Array('Core', 'XML', 'Events', 'UIEvents', 'MouseEvents', 'TextEvents', 'MutationEvents', 'HTMLEvents', 'LS', 'AS-EDIT', 'XPath');

function dom() {
var i,j
var text = new String;
var div, div_text;

for(i = 0;i

Souhlasím  |  Nesouhlasím  |  Odpovědět
Jerry III  |  13. 02. 2002 03:59

No, chapu ze clanky pro zacatecniky se autori snazi napsat co nejjednussi, ale pak se mame divit ze nam vyrusta spousta lidi co si mysli ze umi napsat kod a pritom pisou neuveritelny paskvily. Zjistovat text pres node.firstChild.nodeValue je neuveritelny diletantstvi, ktery dava naprosto chybny vysledky pokud ma dany nod vic child nodu (treba poznamku a za ni vlastni text, nebo text, poznamku a pokracovani textu). Jediny korektni zpusob jak dostat ekvivalent innerText je pres hezky cykl ktery scita nodeValue vsech deti co sou typu TEXT a CDATA a rekurzivne ziskava text deti co sou ELEMENT (a mozna vic, doufam ze sem na nic nezapomel). Takze clanek pro zacatecniky ano, ale aspon naznacit ze uvedene priklady sou extremne zjednodusenny a v praktickym zivote totalne nepouzitelny.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Alkatraz  |  13. 02. 2002 10:04

A ze nenapises neco sam chytracku, kritizovat umi kazdej ...

Mne se clanek libi.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Bily Kralicek  |  13. 02. 2002 11:15

Mily Jerry, chapu ze jako profesionala a cloveka, ktery je na mnohem vyssi urovni  te tak jednoduche priklady poburuji.  Nicmene z hlediska pedagogickeho je nesmyslne zacinat slozitymy priklady. Pokud pochopis princip na jednoduchem prikladu, muzes prejit k prikladu slozitejsimu. Mas tak dve urovne, pochopis jednu a muzes jit na druhou. Pokud nepochopis uroven druhou, stale ale chapes uroven prvni. Pokud ale zacnes rovnou urovni dve, riskujes, ze treba ctenar nepochobi vubec nic.  

Souhlasím  |  Nesouhlasím  |  Odpovědět
Adam Feistner  |  13. 02. 2002 12:33

No, mne se celkem libily :)

Jako zacatecnik mam ted samozrejme gulas v tom co je Javascript a co DOM, kazdopadne o objektech v javascriptu hezky popisuji pruvodce a referencni prirucka JavaScriptu 1.5 od Netscapa - oboji krasne doplnuje clanky na Zive a je to mozny i stahnout jako zazipovany archiv...

Jeste bych zminil ze by bylo dobre ziskane objekty testovat na null (vim, je to prkotina ale nervy to alespon ze zacatku usetri...)

Souhlasím  |  Nesouhlasím  |  Odpovědět
Jakub Havel  |  13. 02. 2002 21:00

Mozna, Jerry III, ze umite dobre DOM, ale ucit to jineho cloveka, ktery o tom nic nevi,  byste asi nemohl, s vasim pristupem . Duvody proc popsali uz nekteri ctenari prede mnou, tak to nebudu opakovat. Nicmene z vaseho prispevku si beru ponauceni, ze u vlastnosti .innerText bylo mozna vhodne zduraznit, ze vraci VSECHEN text obsazeny v elementu vcetne textoveho obsahu dalsich vnorenych elementu. Ale nemyslim, ze by to v teto fazi vykladu bylo az tak podstatne...

Souhlasím  |  Nesouhlasím  |  Odpovědět
Jerry III  |  14. 02. 2002 19:45

Jakube, ja nechci aby si psal slozity priklady. Ja kdyz pisu neco pro zacatecniky tak taky pisu jednoduse, ale vzdycky se hodi k tomu prihodit jednu vetu ve stylu - pokud to chcete pouzit v "release" systemu tak si k tomu budete muset dopsat tohle, tohle a tamto. V tomhle pripade tedy aspon napsat ze .firstChild.innerText nemusi vubec obsahovat text (bez dalsiho rozvadeni ktery je pro zacatecniku opravdu zbytecne).

Co se tyce clanku, klidne nejaky napisu, ale kam?

Souhlasím  |  Nesouhlasím  |  Odpovědět
Zasílat názory e-mailem: Zasílat názory Můj názor