|
Standardy W3C przywodzą mi na myśl taki stary, sowiecki dowcip: czy to prawda, że na Placu Czerwonym w Moskwie rozdają samochody? - Tak, ale niezupełnie. Bo nie w Moskwie, tylko w Leningradzie, nie na placu Czerwonym, lecz na ulicy Rewolucji i nie rozdają, a kradną. Podobnie jest ze standardami W3C, które większość webmasterów uważa za wytyczne odnośnie tworzenia stron WWW, podczas gdy są to ogólne wskazówki dla producentów przeglądarek internetowych.
W internecie często pojawiają się opinie webmasterów na temat budowy różnych stron internetowych. Osoby te komentując kod strony wygłaszają tezy typu:
strona ma kod niezgodny ze specyfikacją W3C
Otóż "standardy W3C" są zbiorem ogólnych wskazówek dla producentów programów do korzystania z Internetu, takich jak m.in. przeglądarki WWW. Nie są to w żadnym wypadku wskazówki dla webmasterów. Niestety, właśnie ta mylna teza jest wciąż powielana w internecie.
Co więcej, producenci przeglądarek, mimo że są zrzeszeni w organizacji W3C, wcale nie muszą się do tych wskazówek stosować i najczęściej uzupełniają ową specyfikację nieoficjalnie, dodając do swoich programów własne rozwiązania. Nic w tym dziwnego, skoro każda z tych firm promuje własne pomysły, a technologia idzie tak szybko do przodu, że wszelkie specyfikacje nigdy nie nadążą za zmianami.
Prawidłowa teza powinna brzmieć tak:
Specyfikacja W3C jest dla producentów przeglądarek.
Dla webmasterów są książki typu "HTML Księga Eksperta"
Ktoś napisał na forum:
dobrze aby strona była zgodna ze standardami W3C
Dobrze i niedobrze. Jeśli webmaster przy pomocy HTML-a chce wyświetlić na stronie obrazek, to używa tagu [IMG]. Nie ma innej możliwości. Gdyby uznać standardy W3C za wskazówki dla webmasterów, to w tym punkcie strona będzie "zgodna z W3C", niezależnie od tego czy projektant słyszał coś o W3C, czy też nie. Ale jeśli chce osadzić flasha, musi użyć [EMBED], którego próżno szukać w zasobach W3C. Czy to znaczy, że kod będzie "niezgodny z W3C"? Z jednej strony tak, bo [EMBED] nie ma w specyfikacji, a walidator HTML ze strony W3C pokaże błąd. Z drugiej strony, z biegiem czasu zaszła potrzeba, by na stronach można było osadzać nie tylko teksty i obrazki, ale również inne elementy, takie jak animacje flash. Firmy zrzeszone w W3C uznały to za dobry pomysł i dodały do przeglądarek tag [EMBED] (używając go wyświetlimy animację flash pod każdą przeglądarką, czego nie można powiedzieć o zalecanym przez W3C tagu [OBJECT]). Śledząc ten przebieg wydarzeń dochodzimy do wniosku, że z jednej strony owego tagu nie powinno się używać, bo nie ma go oficjalnie w specyfikacji W3C, z drugiej strony został wdrożony przez firmy należące do W3C i jest poprawnie obsługiwany przez współczesne przeglądarki. Do wyboru webmastera należy, czy zastosować nową funkcjonalność wychodzącą poza ramy skostniałej, nieaktualizowanej od lat specyfikacji, czy z niej zrezygnować, żeby walidator nie pokazał błędu. Często oszukuje się walidator i zamiast użycia prostego tagu, którego nie ma w specyfikacji, a który jest obsługiwany przez przeglądarki, osiąga się ten sam efekt przy pomocy różnych obejść. Kombinacje CSS+Javascript wprowadzają zmiany poprzez modyfikację w Document Object Model (więcej pracy, efekt ten sam, a walidator pokazuje zero błędów). Czy warto? Moim zdaniem nie. A wspomniany tag jest tylko jednym z wielu przykładów.
Gdyby sztywno trzymać się mylnej tezy, że standardy W3C są dla webmasterów, należałoby zrezygnować z wielu cech współczesnych przeglądarek. A gdyby producenci przeglądarek nagle zastosowali się do standardów W3C, wiele współczesnych stron w ogóle by się nie wyświetliło.
Sama specyfikacja W3C jest w wielu fragmentach na tyle ogólna, że daje dużą możliwość interpretacji, z czego korzystają producenci przeglądarek. W3C wymyśliło tagi i parametry, które nigdy nie zostały uwzględnione w przeglądarkach. Można stworzyć stronę przy użyciu tagów i parametrów określonych w dokumentacji W3C, których w ogóle nie wyświetlą przeglądarki. Będziemy wtedy mieli stronę zgodną ze standardem W3C, która u nikogo się nie wyświetla.
Przy wielu innych tagach jest określone co robi dany tag i za co odpowiadają jego poszczególne parametry, jednak nie jest to wystarczające, bo tag na stronie nie występuje sam, lecz w interakcji z tagami osadzonymi w jego wnętrzu, na zewnątrz lub obok. Główne problemy spotykane podczas tworzenia kodu strony są związane nie z samymi tagami, lecz niuansami niesprecyzowanymi przez W3C, które powodują że dany element często wygląda inaczej pod różnymi przeglądarkami, za co obrywają - niesłusznie - producenci przeglądarek. Czy to ich wina, że specyfikacja HTML jest ogólna i nieprzewidująca wielu konkretnych sytuacji?
Webmasterzy kreatywnie rozwijają mit o przestrzeganiu standardów, oto przykładowe wypowiedzi:
Strona jest niezgodna ze standardami W3C, bo jest zbudowana na bazie tabelki
Specyfikacja W3C nie mówi o tym co ma być wyświetlane w tabelkach i do czego owe tabelki mają być wykorzystywane. Specyfikacja mówi tylko w jaki sposób tabele mają być interpretowane przez przeglądarki. Sama treść tabeli, obojętnie czy jest to tekst, dane liczbowe czy obrazki oraz to do czego zostanie wykorzystana, jest tutaj nieistotna.
Przy okazji krytyki serwisu, którego strona główna miała postać jednego wielkiego obrazka z nałożoną mapą linków, pojawiła się opinia:
tak zbudowana strona główna nie spełnia standardów W3C
Specyfikacja W3C nie reguluje w jaki sposób ma być zaprezentowana treść strony, to nie jest kodeks etyczny webmastera ani zbiór rad typu "unikaj na stronie głównej obrazków z nałożoną mapą linków". Specyfikacja określa techniczne możliwości prezentowania treści na stronie, dzieląc zawartość na teksty, obrazki, linki, mapy linków etc. Jeśli webmaster zechce - będzie miał na stronie tekst pisany wspak niebieską czcionką na czerwonym tle, a całość zasłonięta obrazkiem. Można powiedzieć, że będzie to nieczytelne i ogólnie bez sensu, ale na pewno nie będzie to "niezgodne ze standardami W3C". Tak samo poprawna językowo instrukcja do telewizora, która została wydrukowana nieczytelną czcionką na papierze marnej jakości, świadczy o tym, że jej wydawca nie szanuje klienta, ale na pewno nie oznacza to automatycznie, że została napisana niezgodnie z zasadami ortografii, czyli wbrew standardom opracowanym przez Radę Języka Polskiego.
W 2004 roku w organizacji W3C nastąpił rozłam. Opera, Mozilla i Apple założyły własną organizację w celu rozwoju HTML. Role się odwróciły. Wcześniej kilku hobbystów stworzyło specyfikację, do której firmy tworzące przeglądarki mogły się zastosować lub nie. Teraz same firmy wzięły się za tworzenie nowego standardu, odstawiając teoretyków na bok. Dlatego zaczyna być głośno o HTML5. Jednym z pierwszych zapowiedzianych tagów ma być tag [video], który pojawi się prawdopodobnie przed wdrożeniem HTML5. Jeśli zostanie on wprowadzony w Operze, Firefoksie, Safari czy nawet Internet Explorerze, znowu nastąpi paradoks: będziemy mieli funkcjonalność niezgodną z W3C, ale wspieraną przez produkty firm zrzeszonych w W3C. Co wtedy powiedzą webmasterzy? Większość zacznie korzystać z nowego tagu (bo dlaczego by nie?), ale znajdzie się część, która powie, że to niezgodne ze standardami W3C i że lepiej zastosować Javascript wstrzykujący do DOM parametr [object] plus [embed] który wyświetli film AVI poprzez player swf. 100% zgodności z W3C według walidatora, 500% poświęconego czasu, 0% zdrowego rozsądku.
Umiejętność "tworzenia stron zgodnie ze standardami W3C" ładnie wygląda w CV i fajnie się jej używa podczas rozmów na forach dyskusyjnych, ale tak jak do wszystkiego w naszym życiu, tak i do stosowania standardów trzeba zachować dystans. Jako przykład podam napis "ustąp miejsca starszym" w tramwaju. Gdyby podejść do tej zasady tak, jak część webmasterów podchodzi do W3C, piętnastolatek musiałby ustępować miejsca szesnastolatkowi, a kierowca tramwaju przed każdym odjazdem musiałby sprawdzać wiek wszystkich pasażerów. Tymczasem znając tę zasadę podświadomie wiemy o co w niej chodzi i selektywnie ustąpujemy miejsca starszym osobom, a zdarza się że i młodszym, jeśli zajdzie taka potrzeba. A przede wszystkim przystosowujemy się do sytuacji i działamy zgodnie ze zdrowym rozsądkiem.
Proponuję tezę, która jest stosowana przez wszystkich webmasterów, także purystów W3C, choć ci niechętnie się do tego przyznają:
Kod strony powinien zostać zbudowany w ten sposób, aby zapewniał prawidłowe wyświetlanie strony pod jak największą liczbą przeglądarek, z naciskiem na te, które są najpopularniejsze, z użyciem wszelkich możliwych obejść, sztuczek i hacków w miejscach, w których przeglądarki różnią się między sobą w sposobie interpretacji kodu.
I tak to jest z tymi standardami.
Tym którzy nie mogą się zgodzić z powyższym, dedykuję moją autorską przeróbkę czterech głównych zasad izraelskiego systemu walki Krav Maga:
Zasada nr 1. Unikaj niebezpiecznych tagów i parametrów HTML.
Zasada nr 2. Jeżeli znajdziesz się w miejscu, w którym trzeba użyć niebezpiecznego tagu lub parametru - przerwij pracę jak najszybciej.
Zasada nr 3. Jeżeli znajdziesz się w miejscu, w którym trzeba użyć niebezpiecznego tagu lub parametru i nie możesz tego uniknąć, broń się używając wszelkich dostępnych metod webmasterskich.
Zasada nr 4. Jeżeli musisz użyć niebezpiecznego tagu lub parametru, nie możesz tego uniknąć i nie możesz się bronić wszelkimi dostępnymi metodami webmasterskimi, zacznij kodować w sposób maksymalny, nie stawiając sobie żadnych ograniczeń.
Sławomir Wilk
Komentarze:
marcinrobak | 2009-05-14 09:57 |
Powiem tak: Artykuł pierwsza klasa. Zaskoczył mnie. Dodałbym jeszcze jedną wskazówkę, którą zamieściłeś "nie wprost". TESTUJ!!!.
ps Opera rulez :) ps2 Zapomniałbym o świętym forumowym - PIERWSZY !!! ps3 Nie ma tutaj muzyki więc nie mogę zapytać - Co to za muzyczka w tle? Ciekawy wpis, jako webdeveloper zgadzam się z większością wpisów.
Gdy powstaje strona, która zawiera nieco więcej, niż sam tekst i obrazki, ale też CSS czy JavaScript, prędzej czy później (w praktyce częściej to pierwsze), dochodzimy do punktu, kiedy wygląd i działanie strony zaczyna być różne w różnych przeglądarkach. Nawet, kiedy strona będzie "zgodna ze specyfikacją W3C". Dlatego traktuję takie stwierdzenie jako pusty frazes.
Każdej minuty setki developerów na całym świecie wpada w irytację, pracując przy tworzeniu stron "cross-browser". To często bywają drobnostki - coś wyświetla się z innym odstępem w IE, niż w Firefoxie itp. Gorzej przy JavaScripcie - tutaj to już prawdziwe pole walki.
Ale to nie tylko irytacja programistów. W wymiarze ekonomicznym to są olbrzymie sumy pieniędzy, które zostają wydawane każdego roku tylko w tym celu, aby strony WWW (podstawa w dzisiejszym biznesie) działały prawidłowo pod różnymi przeglądarkami (a dokładnie - w jak największej ilości przeglądarek).
To trochę tak, jak w bajce o Kopciuszku. Kiedy już wywiąże się ze swoich obowiązków (posprząta dom, umyje podłogi czy ugotuje jedzenie), nie zdąży się ucieszyć z dobrze wykonanej pracy, bo oto przychodzi zła macocha z wiaderkiem, wysypuje zawartość na podłogę i każe wybierać mak z popiołu.
Webdeveloperzy też nie zdążą się nacieszyć dobrze napisaną stroną, bo zawsze znajdzie się dla nich wiaderko z makiem i popiołem. Tylko kto w tym przypadku jest tą złą macochą? Krzysztof Kotlarski | 2009-05-25 22:10 |
dawno sie tak nie usmialem;) zgadzam sie tylko z komentarzami do cytatow oraz czesciowo z <embed> nie mam wyrobionego zdania o html5 wiec nie komentuje czy ksiazki w stylu "html ksiega eksperta" nie radza aby wartosci parametrow byly ujete w cudzyslowiu (to w kontekscie zrodla tej strony;) ) dbanie o to by strona sie walidowala nie rozwiazuje wszystkich problemow ale napewno pozwala uniknac czesc z nich glownym problemem tabel czesto jest ich mala elastycznosc i niska czytelnosc kodu (dla developera w przypadku rozbudowy/edycji oraz programow wspomagajacych np osoby niedowidzace) ale najlatwiej to dostrzec przy bardziej skomplikowanych stronach lub takich ktore czesto sie rozbudowuja czym sa niebezpieczne tagi? chodzi o <blockquote> i podobne? przeciez zwykle divy czy tableki tez potrafia zachowac sie niezgodnie z oczekiwaniami
Sławomir Wilk | 2009-05-25 22:17 |
Krzysztof Kotlarski: HTML4 nie wymaga brania wszystkich parametrów w cudzysłowiu. W cudzysłów trzeba brać tylko te parametry, które nie są wyrazami (znaki: a-z) lub liczbami (znaki: 0-9). Dopiero XHTML wymaga pisania wszystkich parametrów jak leci w cudzysłowiu. Krzysztof Kotlarski | 2009-05-26 00:04 |
brzmi jak w3c ;) a z praktycznej strony cudzyslow sie przydaje ze wzgledu na czytelnosc (rowniez poprawne kolorowanie skladni) - no chyba ze liczymy na to ze parsery zaczna sie sypac http://www.w3.org/TR/html401/struct/tables.html
"Tables should not be used purely as a means to layout document content as this may present problems when rendering to non-visual media. Additionally, when used with graphics, these tables may force users to scroll horizontally to view a table designed on a system with a larger display. To minimize these problems, authors should use style sheets to control layout rather than tables."
Powiedzieli o tabelkach? Powiedzieli.
EMBED? Proszę, masz opisane jasno tutaj czego powinno się raczej używać: http://www.alistapart.com/articles/flashsatay/ Nie wiem nie znam się ale czy w3c nie jest przypadkiem sposobem na u normalizowanie standardów. Bardzo ciekawy artykuł, zresztą podobnie jak większość na blogu, którego lektura mnie bardzo wciągnęła. Jednak co do walidacji stron nie do końca się zgodzę. W większości staram się tworzyć strony wg standardów, zdarza się, iż czegoś się nie da, ale zawsze wcześniej długo szukam rozwiązania i w 99% takowe znajduję. Stworzenie dobrej strony nie liczy się na czas, tylko na jakość, więc wolę poświęcić więcej czasu, ale zrobić to dobrze. Wstawić Flasha wg standardów da się, zrobienie strony na tabelach nie jest zalecane. Ja osobiście jako pasjonata uwielbiam sobie sprawdzić stronę i mam satysfakcję jak nie ma błędów i polecam to rozwiązanie każdemu. Co HTML 5 wg mnie nie wypnie XHTML-a 1.0 Strict, ale to tylko moja opinia i czas pokaże... Też pisałem kiedyś o standardach W3C z przymrużeniem oka. Zapraszam do artykułu: http://blog.watigraf.pl/pl/1-standardy-w3c-a-walidacja-strony-internetowej.html
Dodaj komentarz:
|
|
|
|