Kurs DOM - poradnik dla każdego#
Tworząc kurs HTML5 nie sposób nie wspomnieć nic o języku interfejsowym DOM (Document Object Model). Cała specyfikacja HTML5 bazuje w większości na definicjach DOM, co w praktyce czyni ją bardzo trudną w odbiorze. Mam tutaj na myśli ogólną wersję dokumentu przeznaczoną dla koderów WWW oraz implementatorów w programach (np. w przeglądarkach internetowych). Nie wszyscy zajmują się dynamicznym HTML-em, dlatego w ich przypadku takie pomieszanie dwóch światów jest trudne do przełknięcia. Postanowiłem utworzyć rzetelny i aktualny kurs DOM, dzięki któremu zgłębianie kolejnych mechanizmów webowych bazujących na DOM stanie się o wiele łatwiejsze.
Kurs w głównej mierze tworzony będzie na podstawie bieżącej wersji DOM Living Standard (WHATWG), jak również poprzednich specyfikacji DOM, aktualnej specyfikacji HTML Living Standard (WHATWG), a także innych specyfikacji i ciekawych źródeł, do których uda mi się dotrzeć.
Odniesienia i aktualizacje#
Cały materiał związany z modelem DOM podzielony został na trzy części (sekcje) i umiejscowiony w osobnych miejscach witryny:
- Kurs DOM - podstawa przeznaczona dla dokumentów XML i HTML.
- Kurs DOM HTML5 - rozszerzenie przeznaczone dla dokumentów (X)HTML.
- Kurs WebAPI - uzupełnienie zawierające kolejne interfejsy webowe dla stron i aplikacji.
Miałem opisywać wszystko w jednym miejscu, ale wymieszanie dużej liczby poleceń z różnych specyfikacji jest niepraktyczne. Najlepiej wydzielić i prezentować poszczególne rozwiązania w kilku wiążących sekcjach. Zaznaczam tylko, że sekcja WebAPI obejmuje wszystkie pozostałe (mniej popularne) nowości, które rozszerzają możliwości przeglądarek internetowych na wielu płaszczyznach.
W podstawowym kursie DOM mogą pojawić się wstawki z innych specyfikacji, które uznam za kluczowe z punktu widzenia programowania (np. przetwarzanie i opisy zdarzeń czy parsowanie i serializacja).
Kolejna sprawa to aktualność opisów. Specyfikacja DOM4 (autorstwa W3C) tworzona jest od października 2010 roku. Aktualizacje odbywają się średnio co 3-4 miesiące, ale ostatnie przerwy bywały dłuższe, dlatego dokumentacja W3C była przestarzała i zawierała sporo błędów. Sami twórcy przeglądarek internetowych wprowadzają poprawki wprost z "żywej wersji". Biorąc to wszystko pod uwagę postanowiłem oprzeć kurs na materiałach udostępnianych przez WHATWG.
W związku z cyklicznymi zmianami specyfikacji (często z dnia na dzień) mogą nastąpić odpowiadające zmiany w kursie. Zazwyczaj zmiany obejmują modyfikację algorytmów, dodanie nowych interfejsów lub lekką modyfikację obecnych. Nie mam żadnych informacji odnośnie planowanego terminu ukończenia nowego standardu. Z drugiej strony praktyka tworzenia dokumentów przez WHATWG jest taka, że żywa wersja nie jest wersjonowana, zmiany są dodawane w razie potrzeby.
Powyższa uwaga dotyczy wszystkich pozostałych specyfikacji. W razie potrzeby całość będzie uaktualniania tak szybko, jak tylko będzie to możliwe.
Cele#
Nie planuję utworzenia kompletnej dokumentacji DOM dla dokumentów HTML czy XML. Nie znajdziesz tu opisów wszystkich metod, właściwości i innych kruczków. Temat jest zbyt rozległy, żeby mógł zostać udźwignięty przez jedną osobą. Raczej skupie się na podstawach, które będą przydatne w rozpoczęciu przygody z DOM oraz późniejszym, samodzielnym wyszukiwaniu informacji.
Treść będzie na tyle szczegółowa na ile być musi, tzn. rzeczy istotne w całej układance będą prezentowane dokładnie. Kurs tworzę głównie w celu uporządkowania własnej wiedzy oraz poszerzeniu horyzontów. Jeśli ktoś chciałby mieć wykaz wszystkich możliwych poleceń powinien skorzystać z gotowych projektów.
Kurs nie jest też wykazem wsparcia każdego polecenia w poszczególnych przeglądarkach. Czasami przy opisach poleceń mogą pojawić się dodatkowe uwagi w tym zakresie, ale występują jako ciekawostki, a nie solidny przegląd wsparcia danej funkcjonalności. Może w przyszłości utworzę konkretne testy, które pozwolą szybko i kompleksowo przebadać obsługę nowego DOM w dowolnych przeglądarkach.
JavaScript#
Bardzo często będę nawiązywał do JavaScriptu, umieszczał pewne reguły oraz objaśniał specyficzne cechy języka. Nie będzie to pełnoprawny kurs JS, ale informacje takie mogą okazać się niezwykle interesujące i przydatne.
Wszystkie przykłady użycia DOM będą prezentowane z wykorzystaniem JavaScriptu na stronach HTML5 (typ text/html
). Nie wykluczone, że gdzieniegdzie mogę zaserwować XHTML5 lub XML, jeśli będzie to istotne. Należy mieć na uwadze, że DOM jest językiem (modelem) niezależnym od platformy, dlatego może być wykorzystywany do przetwarzania dokumentów w dowolnym innym języku, np. PHP czy Java. Warto poświęcić kilka minut z życia na jego poznanie przynajmniej w minimalnym zakresie. Wiedza taka na pewno zaprocentuje w przyszłości.
Sam kod przykładów nie będzie najwyższej jakości, tzn. nie umieszczę w nich optymalnego rozwiązania - jest to świadome działanie z mojej strony. Przykłady mają na celu proste zaprezentowanie danego polecenia, jego rezultatów z możliwością szybkiej modyfikacji (bezpośrednio w Testerze kodu WWW). W projektach docelowych należy być "bardziej poprawnym" w kontekście stylistycznym, składniowym, jakościowym i wydajnościowym. Stanowi to osobne zagadnienie, z którym każdy programista prędzej czy później będzie musiał się zmierzyć.
Jeśli coś okaże się dla Ciebie niezrozumiałe, nie przejmuj się. Wyjdź na dwór, pooddychaj świeżym powietrzem, kiedy będziesz miał ochotę wróć i ponownie zmierz się z problemem. Każdy zaczyna w podobny sposób, od Ciebie zależy gdzie się zatrzymasz.