31 ottobre 2008

Riconoscere funzionalità e verisione dei browser con javascript

Chiunque abbia mai utilizzato un linguaggio di scripting client side come Javascript ad un livello medio-avanzato, si sarà trovato di fronte al problema della compatibilità del codice scritto da parte del motore javascript del proprio browser.
In questo caso è stato sicuramente necessario distinguere diversi comportamenti in base alle diverse funzionalità attive nel browser.

Ecco un esempio di distinzione di tali funzionalità e versioni del browser.
// recupero le informazioni del browser
var AgntUsr=navigator.userAgent.toLowerCase();

// controllo se il browser utilizza i dom
var DomYes=document.getElementById?1:0;

// controllo se il browser è firefox
var NavYes=AgntUsr.indexOf('mozilla')!=-1&&AgntUsr.indexOf('compatible')==-1?1:0;

// controllo se il browser è explorer
var ExpYes=AgntUsr.indexOf('msie')!=-1?1:0;

// controllo se il browser è opera
var Opr=AgntUsr.indexOf('opera')!=-1?1:0;

// controllo se si tratta di una versione di opera maggiore o uguale alle 6
var Opr6orless=window.opera && navigator.userAgent.search(/opera.[1-6]/i)!=-1 //DynamicDrive.com added code

// controllo se viene utilizzato il modello dom di firefox
var DomNav=DomYes&&NavYes?1:0;

// controllo se viene utilizzato il modello dom di explorer
var DomExp=DomYes&&ExpYes?1:0;

// controllo se si utilizza una versione di firefox che non utilizza i dom
var Nav4=NavYes&&!DomYes&&document.layers?1:0;

// controllo se si utilizza una versione di exlorer che non utilizza i dom
var Exp4=ExpYes&&!DomYes&&document.all?1:0;

// controllo se la versione di explorer è la 7
var ie7 = ExpYes&&typeof document.body.style.maxHeight != "undefined"?1:0;

// controllo se la versione di explorer è la 6
var ie6 = ExpYes&&!ie7?1:0;

Naturalmente chi volesse segnalare altri generi di controlli lo faccia e questi verranno aggiunti.

Nessun commento: