Inteligentní browser? Děkuji, nechci.

30. 9. 1999
Doba čtení: 4 minuty

Sdílet

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í…

Autor článku

V roce 1998 jsem s Michalem vymyslel a založil Root.cz. Poslední článek na Roota jsem napsal v roce 2007. Teď píšu spíš na tomaskrause.cz a tvořím si bitcoinvkapse.cz.