Přeskoč navigaci

Zde hledá Jyxo.

Jyxo

Dokument nebo aplikace

Pavel Šimek, vydáno/aktualizováno: 15.10.2001/06.10.2003

Je webová stránka dokumentem nebo aplikací? Domnívám se, že tuto otázku, kterou si už dnes – ať vědomě či podvědomě – klade čím dál víc webdesignerů, se budeme muset naučit jednoznačně vyřešit před začátkem návrhu každého projektu. V současnosti si řešení této otázky komplikujeme snahou o přístupnost stránky co nejširšímu záběru uživatelů. Tato snaha – všeobecně považována za ušlechtilou – podle mě nemusí vždy vést k nejlepšímu řešení z hlediska celkové internetové strategie.

Jazyk HTML lze už dnes vnímat dvěma naprosto odlišnými způsoby. Tradičně jako značkovací jazyk, který aplikujeme na text za účelem jeho strukturování (a následného formátování). Nově však jako jazyk pro vytváření knihoven objektů, které teprve ve spojení s JavaScriptem a CSS dostanou podobu aplikace, se kterou může uživatel pracovat. Bez skriptů a stylů je to jen nečitelná hromada dat.

Jsem velmi skeptický ke snahám o kompromis mezi těmito dvěma extrémy. Budeme-li se neustále úzkostlivě snažit, abychom jedinou verzí své "dokumentoaplikace" postihli jak uživatele PC s moderním browserem, tak i milovníka textového prohlížeče, mobilního telefonu a nevidomého uživatele odkázaného na hlasový výstup, nutně dojdeme k tomu, že plně neuspokojíme ani jednoho z nich, resp. nevyužijeme potenciálu, který se pro každého z nich nabízí.

Představme si složitou stránku portálovitého typu, uprostřed které se krčí anketa – oblíbená součást takových stránek. Rozhodneme-li se hlasovat kliknutím na některou volbu, celá stránka se začne znovu načítat, aby se aktualizoval pouze graf ankety. Nevím jak vás, ale mě obvykle vidina tohoto obnovování stránky od hlasování nakonec odradí. Přitom pomocí dynamického HTML by toto bylo možné řešit mnohem efektivněji – po provedeném hlasování by se kontaktoval server, provedl zápis do databáze, přijal výsledek v podobě několika bajtů dat a ten by se zapracoval zpět do grafu na stránce, aniž by se cokoliv jiného pohnulo.

Jde o příklad využití prostředků dynamického HTML (tedy především JavaScriptu) ke zcela zásadnímu zefektivnění webové aplikace, nikoliv pouze k doplnění stránky o atraktivní ovládací prvky. Značná část práce uživatele s aplikací by se mohla odehrávat na jediné stránce, což je jistě pro uživatele přirozenější.

Stránka se však tím stane závislou na JavaScriptu. Pokud tedy dnes toto řešení zavrhujeme, pak je to s ohledem na ony "netypické" uživatele, kteří používají prohlížeč s problematickou nebo žádnou podporou JavaScriptu. Škála nejrůznějších zařízení, na kterých budeme přijímat internetový obsah, se ovšem bude nadále rozšiřovat, propast mezi nimi zvětšovat. Domnívám se, že odpovědí na tento trend bude muset být několik naprosto odlišných verzí jednoho webu, pro odlišné skupiny uživatelů – zřetelná dělící čára přitom povede právě tam, kde končí dokument a začíná aplikace.

Uvedený příklad složité stránky s anketou je typickým kandidátem na zpracování formou plnohodnotné aplikace (nikoliv pouze "oživlého hypertextu") na bázi dynamického HTML. Tuto verzi jistě nadšeně uvítají uživatelé plnohodnotných moderních prohlížečů. Naopak potřeby nevidomého uživatele nebo majitele jednoduchého mobilního zařízení nevyřešíme pouhým zavrhnutím JavaScriptu. Jak jsou asi dnes tito uživatelé nadšeni ze zmiňované stránky s anketou, když po provedeném hlasování se jim začne na malý displej vypisovat nebo hlasem předčítat opět celá stránka shora dolů? Pro ně bude jistě vhodnější web řešený jako hypertextový systém tvořený množstvím jednoduchých a krátkých dokumentů.

Základními pilíři dynamického HTML jsou CSS a JavaScript. Co se týče CSS, není sporu o tom, že čím důslednější je jejich využívání, tím lépe – ať už tvoříme jednoduchý dokument nebo složitou aplikaci. Komplikovanější situace je s JavaScriptem. Zde naopak velmi záleží na tom, zda směřujeme k tvorbě dokumentu nebo aplikace. V prvním případě nám jde o to, aby stránka neztratila nic ze své funkčnosti ani tehdy, jsou-li skripty ignorovány. JavaScript je zde pouze třešničkou na dortě a tipy pro takové jeho využití dobře shrnuje Martin Kopta v článku Kdy použít JavaScript, a jak.

Rozhodneme-li se však směřovat k aplikaci, bude role JavaScriptu úplně jiná – stránka bude mít smysl pouze s funkčními skripty. HTML dokument bez skriptů (navíc většinou i bez stylesheetu, protože podpora JavaScriptu a CSS jdou obvykle ruku v ruce) bude mít podobu nečitelné knihovny objektů a bude tedy nežádoucí ji vůbec zobrazovat. Není třeba se bát tohoto řešení. Je ale nutné dobře vědět, kterých uživatelů se týká a pro které bude nepoužitelné – na základě širší strategie se pak musíme rozhodnout, zda je budeme ignorovat nebo pro ně připravíme alternativní řešení.

Pro koho tedy bude naše aplikace dynamického HTML určena? To záleží na tom, jakými prostředky ji vybudujeme. Stejně jako v případě všech ostatních technologií, i zde platí, že nejvíce prospějeme jejich rozvoji striktním dodržováním existujících standardů. Zde je to především Document Object Model, který definuje rozhraní mezi skriptem a objekty HTML dokumentu. Nové verze prohlížečů, které jsou již přátelské ke standardům W3C, podporují DOM už do té míry, že lze najít spolehlivou podmnožinu jazykových konstrukcí, na jejichž základě lze budovat naše aplikace. Není již nutné komplikovat skripty odstíněním rozdílů mezi prohlížeči a jejich verzemi a s každou novou verzí prohlížeče se strachovat, zda naše aplikace bude stále fungovat.

Nebojme se tedy ve vhodných případech opustit všeobecně převládající přístup k tvorbě webů spočívající v hledání kompromisu, který uspokojí každého, avšak nevyužije plně potenciál dostupných technologií. Ostatně investice do více verzí webu pro různé skupiny uživatelů se může vrchovatě vrátit v podobě užitku z mnohem efektivnějšího oslovení každé z těchto skupin.

© 2001 Pavel Šimek

Tato stránka je přístupná libovolným prohlížečem, nejlépe však vypadá v prohlížeči, který podporuje HTML 4.0 a CSS 2 (Internet Explorer od verze 5, Mozilla, Opera a další). Pokud čtete tuto zprávu, váš prohlížeč zřejmě dostatečně nepodporuje CSS. Stránku sice vidíte bez pokročilejšího formátování, avšak veškerý obsah je plně přístupný i pro vás.