Inteligentní browser? Děkuji, nechci.

Tomáš Krause 30. 9. 1999

Co si budeme povídat, udělat stránku tak, aby rozumné vypadala ve všech prohlížecích (a jejich všech verzích) není žádná sranda a chce to určitou zkušenost. Nedávno jsem narazil na dva do oči bijící prohřešky některých 'webmasteru' a proto vznikl tento článek.

Než se začtete do následujících řádek, doporučuji náš starší a veleúspěšný :) článek, který seznamuje s úplně nejčastějšími chybami při tvorbě stránek.

Oba problémy o kterých chci mluvit vznikají díky ‚inteligenci‘ nejmenovaného browseru. Ten totiž opravuje chyby uživatelů a snaží se odhadnout co vlastně člověk chtěl. Například napíšu-li, že chci na stránku http:\\www.root.cz, pochopí, že jsem blbec a myslel jsem http://www.root.cz, potud vše v pořádku, je to užitečné a totálního začátečníka aspoň nematou hlášky o neexistenci adresy.
Průšvih nastává při tvorbě stránky (ruční a nebo pomocí nejmenovaného software), kdy autor do zdrojáku vpustí nesmysl ve stylu <IMG SRC=„obrazky\mu­jobrazek.jpg“> a prohlížeč to opět opraví na správné <IMG SRC=„obrazky/mu­jobrazek.jpg“>. Jenže už to nepozná prohlížeč bez této ‚inteligence‘, čímž vzniká situace, kdy si autor libuje, jaké má super stránky a že je taky na tom Internetu a návštěvníci nedisponující oním úžasně inteligentním prohlížečem si říkají co je to za idiota, že napíše do stránky \ místo /.

Druhý problém na který jsem narazil shodou okolností vzápětí po tomto, byl ten, že ‚inteligentní‘ prohlížeč pochopí i tag <IMG SRC=„obrazky/mu­jobrazek“> (chybí koncovka) a nastává úplně stejný problém jako u \ vs. / – autor je v pohodě a návštěvníci si myslí něco o idiotech. Hodně sebevědomý autor stránky vám na dobře míněnou radu, že takhle to jaksi nejde, odpoví, že to je blbost, on a jeho kamarádi to přeci vidí dobře.
A co je v tomto případě špatně? Každý normální prohlížeč se řídí standardem, který říká, že typ dat (tedy obrázek, html soubor a pod.) je obsažen v HTTP hlavičkách a to má prohlížeč poslouchat, ne analyzovat obsah souboru. Webserver ale typicky nezná typy souboru, které obhospodařuje – rozhoduje se právě podle koncovky. Pokud soubor koncovku nemá (nebo má takovou, pro kterou není explicitně typ určen), je poslán přednastavený výchozí typ, který pochopitelně s velkou pravděpodobností nebude korespondovat se skutečným obsahem souboru. A neštěstí je hotovo.

O této vlastnosti některých prohlížečů se vedla bouřlivá diskuze v jedné konferenci a zastánci ‚inteligentních‘ browserů je hájili nejčastěji tím, že je to pokrok, že na tom není nic špatného atd. Já se naopak domnívám, že to je pseudopokrok a špatné je na tom všechno. A vysvětlím hned proč.

1. Je tím oblbován autor stránky. Software mu vlastně tvrdí, že udělal všechno dobře a přitom to jsou jasné chyby.
2. Často se o HTML mluví jako o programovacím jazyku, není to tak docela pravda, ale když se toho budeme držet, tak si neumím představit program, ve kterém programátor poplete \ a /, případně vynechá kousky kódu úplně, pak ho v klidu zkompiluje a ten bez problému poběží.
3. Software by měl dělat pouze to, co je dáno určitým standardem a ne se pokoušet být chytřejší než jeho uživatel a následně tím přivádět jiné uživatele do úzkých.

Abych nebyl špatně pochopen, nemám vůbec nic proti ulehčení práce pro uživatele a když některý browser implementuje funkci, která umožní do něj napsat ‚chci si s někým pokecat‘ a on za mě inteligentně vybere chatovací server podle mých zájmů, neřeknu ani slovo. Ale tato ‚inteligence‘ podle mě nesmí napomáhat tomu, že se na web dostane něco, co nepochopí x jiných browserů a ti to budou interpretovat jako chybu – a oprávněně.

Kdyby výše zmíněné chyby generoval nějaký minoritní prohlížeč (a k němu přibalený HTML editor), asi by si většina uživatelů zaťukala na čelo a zmačkla klávesu DELETE. Když to udělá někdo jiný a obalí to náležitými slogany o pokroku a jednoduchosti pro uživatele, je to v pořádku…

Závěrečná rada pro webmastery tedy zní – nedejte na to, co vám povolí váš prohlížeč a pište prosím vás do kódu / a obrázky pojmenovávejte jmeno.gif (jpg, png …), vaší stránku tak uvidí každý a návštěvníci s ‚hloupým‘ browserem si o vás nebudou myslet, že jste blbec.

Závěrečná rada pro M$ (už můžu prozradit o kom byla v článku řeč :)):
Zkuste místo vymýšlení s prominutím kravin, přemýšlet nad důležitějšími věcmi a vyladit to co je dáno standardem. Jeden příklad za všechny: IE 3.0 nepoznal HTTP hlavičku

Content-type: text/html; charset=iso-8859–2

takže nepovažoval dokument za HTML. Pokud člověk zavolal třeba http://nekde/ne­co.html, dokument se zobrazil (IE ho identifikoval podle koncovky). Jakmile to bylo ale jenom http://nekde/, nabídl jeho uložení. Dlouho jsme pátrali po tom, v čem je problém. Nakonec se ukázalo, že IE pravděpodobně detekuje typ dokumentu podle několika desítek prvních znaků v souboru a hledá zřejmě tag <HTML>. Pokud byl totiž na začátku dokumentu tag <!DOCTYPE…> (který je v plném znění dost dlouhý), nabízel uložení, po jeho odstranění jej pak normálně zobrazil.

Uvedený příklad se snaží demonstrovat, že kdyby M$ neinvestoval čas a peníze do vyvíjení ‚inteligentních‘ řešení (a jak vidno, tak navíc občas dost mizerných), ale raději správně naimplementoval standard, ušetřilo by se dost problémů…

Pokud už se chystáte psát, že dneska nikoho nezajímá IE 3.0, tak ještě jedna ukázka, tentokrát odzkoušeno na IE 5.0:
IE nahrazuje \ za / zcela bezhlavě. Na serveru jsem udělal soubor s \ v názvu a IE ho není schopen zobrazit, protože aniž by to zkusil, rovnou změní \ na / a zařve, že soubor nenalezen. Asi si říkáte, proč by někdo nazval soubor \jméno, máte pravdu, není to úplně běžné, ale ukazuje to, jak v M$ nedomýšlejí…

Našli jste v článku chybu?
DigiZone.cz: Vláda schválila digitální vysílání ČRo

Vláda schválila digitální vysílání ČRo

Podnikatel.cz: Novela zákoníku práce. Řeší homeworking

Novela zákoníku práce. Řeší homeworking

Měšec.cz: Test: Výběry z bankomatů v cizině a kurzy

Test: Výběry z bankomatů v cizině a kurzy

DigiZone.cz: Evropa 2: od září nové vedení

Evropa 2: od září nové vedení

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

DigiZone.cz: ČTÚ zveřejnil aktualizovaný D-Book

ČTÚ zveřejnil aktualizovaný D-Book

Měšec.cz: Ceny PHM v Evropě. Finty na úspory

Ceny PHM v Evropě. Finty na úspory

DigiZone.cz: E! a zákulisí turné Mariah Carey

E! a zákulisí turné Mariah Carey

Lupa.cz: Elektronika tajemství zbavená. Jak s ní začít?

Elektronika tajemství zbavená. Jak s ní začít?

Podnikatel.cz: Týká se vás EET? Chtějte od berňáku posudek

Týká se vás EET? Chtějte od berňáku posudek

Vitalia.cz: Ženy, které milují příliš, jsou neštěstí

Ženy, které milují příliš, jsou neštěstí

120na80.cz: Víte, co je svobodná menstruace?

Víte, co je svobodná menstruace?

Podnikatel.cz: OSA zdražuje poplatky. Zaplatíte o polovinu víc

OSA zdražuje poplatky. Zaplatíte o polovinu víc

Vitalia.cz: Galerie: Strouhanka ze starých rohlíků? Kdepak

Galerie: Strouhanka ze starých rohlíků? Kdepak

Vitalia.cz: Je bílý kokos fakt tak úžasný? Ano, je!

Je bílý kokos fakt tak úžasný? Ano, je!

Lupa.cz: Olympiáda zakázala GIFy. Moc to nepomáhá

Olympiáda zakázala GIFy. Moc to nepomáhá

Lupa.cz: Co vzal čas: internetové kavárny a herny

Co vzal čas: internetové kavárny a herny

Lupa.cz: Kdo vykrádá LinkedIn? Zjistit to má soud

Kdo vykrádá LinkedIn? Zjistit to má soud

Měšec.cz: Platíme NFC mobilem. Konečně to funguje!

Platíme NFC mobilem. Konečně to funguje!

DigiZone.cz: Jetelín končí. Prima ho vyřadila

Jetelín končí. Prima ho vyřadila