Perfection or Vanity

Project: Terminated

Blog nie jest już dalej prowadzony ani aktualizowany. Mimo tego, wpisy i komentarze są dalej dostępne. Możesz przeczytać pożegnalny wpis albo przejść do archiwum.

JavaScript bywa nielubiany. Zwykle kojarzy się z czystym złem - tak zwanym DHTML-em, browser sniffing oraz brzydkimi rolloverami w menu. Czasem też z oknami popup i niedostępnymi linkami javascript:.

W oczach wielu ludzi technologia nie zmieniła się od ostatniej wojny przeglądarek. JavaScript bywa przez menadżerów projektów utożsamiany z brudną robotą wykonywaną w ciemności przez podstarzałych skrypciarzy w przepoconych swetrach. To wielka szkoda, bo od dość dawna mamy dostęp do tego, co ja nazywam nowoczesnym JavaScriptem.

Opiera się on na Document Object Model, w skrócie DOM. O ile sam JavaScript zawiera pętle, instrukcje warunkowe, sposoby pisania funkcji i tworzenia obiektów, to DOM jest zbiorem umownych nazw, określających wszystko co w dokumencie się znajduje i co może być na nim wykonane.

W realnym świecie dwóch ludzi na ulicy dużego miasta, mówiących tym samym językiem, jest w stanie się dogadać - wiedzą co to jest autobus, ulica, skrzyżowanie, przecznica, i tak dalej. Potrafią się odnieść do „drugiego przystanku” za aktualnym, „skręcenia w prawo, a później w lewo”. DOM jest zbiorem takich opisów, dzięki któremu możemy się poruszać po wirtualnym mieście - dokumencie.

Podobnie jest na stronie internetowej. DOM jest swego rodzaju API - językiem w którym możemy porozumieć się z przeglądarką i wykonać określone operacje na dokumencie. Odwołujemy się do zbiorów elementów jak images, znajdujemy unikalny element za pomocą getElementById, element rodzic za pomocą parentNode. Wszystkie te magiczne nazwy są metodami oraz obiektami przy pomocy których jesteśmy w stanie wyczyniać cuda.

Model dokumentu opisanego za pomocą DOM jest przedstawiany za pomocą drzewa, w którym elementy są połączone relacjami. Przykładowa strona po załadowaniu do przeglądarki zamienia się w obiekt-drzewo:

DOM Tree

Zrozumieć, że strona jest takim drzewem i podczas pisania znaczników rozwijamy stare gałęzie i tworzymy nowe jest tak samo ważne jak pojęcie różnicy między elementem blokowym a liniowym podczas zwyczajnego webdesignu.

Do czego DOM się może przydać? Za jego pomocą jak już wspomniałem możemy sięgnąć dowolnego „znacznika” na stronie i zmienić go. Dodać nowe elementy pod nim, nad nim, obok niego. Gdy wziąć pod uwagę, że nowoczesne przeglądarki wspierają DOM o wiele lepiej niż CSS, możemy czasem tworzyć workaroundy działające tak jak sobie tego życzymy wszędzie. I wreszcie - poznawszy DOM jesteśmy w stanie operować na jakimkolwiek modelu dokumentu, niekoniecznie HTML. Metoda setAttribute("class","wartość") jest uniwersalna, w odróżnieniu od .className dla dokumentów HTML. :)

Dalej →

Informacje i hiperłącza

Blog o projektowaniu zgodnych ze standardami stron internetowych.

Praktyczne przykłady, sztuczki CSS, sposoby obchodzenia błędów przeglądarek, lekki i nieinwazyjny JavaScript, użyteczny design, dostępność i skrypty użytkownika.

RSS

Informacje o wpisie

Napisał riddle 28 lutego 2006 o 17:12

Kategorie: JavaScript & DOM, Standardy sieciowe

Dodaj do:

Wpisy archiwalne

Archiwum miesięczne

Dzięki!

Dodaj bloga do Technorati Favorites Dodaj bloga do Del.icio.us Blog należy do sieci 10przykazań.com

  1. Mam nadzieję, że to początek jest jakiegoś cyklu tekstów na ten temat, bo pewien niedosyt mi ten wpis pozostawił :)

  2. Czekam na kolejne odcinki :)

  3. o tak czekam na więcej :]

  4. Więcej, więcej :)

  5. No, może nawet wreszcie czegoś nowego się nauczę ;>.

  6. Jak wyżej. Naprzykład js'a :D

  7. Rondelious 7 28 lutego 2006, 19:26

    Może trochę inaczej, DOM nie jest "zbiorem umownych nazw" to interfejs który nauczyły się realizować przeglądarki.
    Jego niewątpliwą zaletą jest to, że jest ujednolicony.
    Nie trzeba bowiem pisać skryptów pod konkretne przeglądarki.

    DOM może być jednak realizowany o oczko wolniej niż niektóre funkcje ze "starego" interfejsu. Odwołanie do tablicy .href będzie realizowane szybciej niż document.getElementByName ....

  8. Na to czekałem, znudziło mi się już czytanie anglojęzycznych artykułów ;-) No i od dawna chciałem się trochę poduczyć DOMa - mam nadzieje, że będą następne odcinki :D

  9. Jeden problem - IE ma swoje nazwy na niektóre atrybuty.

  10. Że tak pozwolę sobie powiedzieć, że IE ma swoje nazwy na WSZYSTKO :).
    Ale dalsza część (powstanie, prawda?) może da mi dodatkowe spojrzenie na JS, bo ostatnio się w AJAX'a zacząłem bawić, to się przyda :). A na W3Schools wcale nie jest wszystko jasno powiedziane :(. Tzn. wszystkie obiekty, ich metody itp. są w większości przedstawione, ale brak realnych przykładów zastosowań poza drętwymi i nie wychodzącymi nieraz poza document.write ( :O ) przykładami bez praktycznego zastosowania.

  11. Jeśli ktoś zamierza zajmować się / uczyć się DOM... to nie obejdzie się bez dokumentacji - MZ dość przyjemna jest ta na Devmo ( http://developer.mozilla.org/en/docs/Gecko_DOM_Reference ), którą swego czasu zacząłem tłumaczyć ( http://developer.mozilla.org/pl/docs/Dokumentacja_Gecko_DOM )... no, jak ktoś ma bardzo dużo wolnego czasu to może próbować kończyć ;-)

  12. Dokumentacja? Oczywiście, tak samo jak do wszystkiego innego. Bez dokumentacji niczego się na dłuższą metę nie zrobi, a jeśli się zrobi, to metodą prób i błędów w duuużo dłuższym czasie (zakładając, że ma się szczęście). Ale dokumentacja nie zawiera wszystkiego, tylko określone informacje. Bardzo ważne, ale nie wystarczające, by w sposób EFEKTYWNY i POPRAWNY w sensie ideologicznym posługiwać się daną technologią.

  13. No... to zależy już od samej dokumentacji. Jeśli to tylko 'reference' to ciężko się tylko z niego nauczyć korzystania z danej technologii, ale jeśli ktoś się pobawił i skrobnął jakiś tutorial czy coś - to niekoniecznie (nie mówię akurat, że Gecko DOM Ref na Devmo takie jest).

    Zresztą nie sugerowałem, że dokumentacja to wszystko. To po prostu potrzebna rzecz.

  14. Wpis jest początkiem ciekawego artykułu, tylko czekać na następne wersje, muszę tylko upolować ten wpis. Mam takie malutkie zastrzeżenie:
    >przecznica
    pszenica
    a tak poza tym to nic ;)

  15. Lol, myślałem, że chodzi o pszenicę, nie przecznicę :P Sorry

  16. Dodam tylko że DOM jest dostępny nie tylko w JS, z powodzeniem można go używać z poziomu PHP, Flasha (chyba) oraz przy pomocy wielu innych bibliotek do konkretnych języków programowania.

  17. Myślałem że dwa ostatnie zdania o tym mówią, ale dzięki za rozjaśnienie. :)

  18. piko_z_terminala 18 01 marca 2006, 00:37

    Riddle, czym generowales drzewko widoczne na grafice? Od pewnego czasu szukam programu, ktory pozwoli efektywnie tworzyc podobne drzewka (bez ograniczen na liczbe wychodzacych galezi, etc) -- cos co po mocnej edycji zpewne z drzewka zrobi nieregularny platek sniegu, albo gwiazdke, jak kto woli ;-)

  19. Zmartwię Cię, bo to nie jest generowane. :)

  20. mootools - element.js

    Przed przejściem do lektury na temat pliku element.js polecam osobom, które o DOM maja małe pojęcie przeczytać trochę materiałów na ten temat. Osobiście polecam ten artykuł o obiektach DOM oraz wpisy Riddle'a na ten temat:

    Document Object[...]

Dodaj komentarz

Do formatowania komentarzy używaj Textile (HTML nie działa). Szczególnie jeśli wklejasz większe fragmenty kodu. W razie niepewności użyj podglądu komentarza.

Wypowiedzi obraźliwe, infantylne oraz nie na temat będą moderowane – pisząc postaraj się zwiększyć wartość dyskusji.

Komentarze nie służą do wysyłania wiadomości albo informowania o błędach, itd. Chcesz coś mi napisać – skontaktuj się.