Správná detekce prohlížeče
Martin Kopta má určitě pravdu když tvrdí, že
kolekce document.all jednoznačně neidentifikuje
prohlížeče z rodiny Internet Explorer.
Jedná se v podstatě o problém kdy potřebujete zjistit, na
straně klienta, verzi jeho prohlížeče a například se rozhodnout jakou část kódu použijete. Nezřídka se stává, že
prohlížeč nepodporuje nebo špatně implementuje
standardní metody DOM
nebo jiné technologie a je třeba využít jeho vlastní specifické řešení.
Mezi nejobvyklejší detekce prohlížeče z rodiny Internet Explorer
patří test na kolekci document.all. Povětšinou v
následujícím provedení
if(!document.all){
//standardni vetev kódu
}else{
//proprietární využití pro IE
}Právě zmíněná konstrukce nám ovšem do větvě pro Iinternet Explorer
pošle např. i prohlížeč Opera, který na document.all
vrací Object a tudíž se může dostat části, která
může způsobit chybu.
Z výše uvedeného vyplívá, že se vyplatí testovat opravdu na specifické(proprietární)
vlastnosti dané implementace JavaScriptu resp. JScriptu nebo technologie.
Zmíněná Opera by se měla bezpečně detekovat na voláníwindow.opera. Internet
Explorer 4.01 lze detekovat na window.print u vyšších verzí
Interent Exploreru bych naopak doporučoval použití specifické implementace událostí
(objekt Event). Více k tomuto tématu přináší
Eddie Traversa v článku
Object Detection in the New Browser Age
Otázkou zůstává, jak se postavit k detekci novějších verzi, které mohou proprietární
technologie opustit? Avšak to se například z důvodů zpětné kompatibility nedá
očekávat. Problém bych řešil vždy na konkrétním případu, vždyť chyba nebo odlišnost
se vždycky najde….
Související články
Související epizody CZ Podcastu
- #217 · Ivo Lukačovič
O Windy, JavaScriptu a budování firem.
- #3 · Java 6 SE, Vývoj webových aplikací
Dagi a Filemon o novinkách v Javě 6 a webových frameworcích.