dagblog.
← Archiv

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

Verze na Medium

Související články

Související epizody CZ Podcastu