L'oggetto navigator, a sua volta oggetto di window appartenente al BOM (Browser Object Model), dispone di un cospicuo numero di proprietà atte a comunicare informazione relative al browser utilizzato e a determinate impostazioni dello stesso come ad esempio se il suo stato corrente è online (se si è connessi) oppure se i cookie sono stati abilitati o ancora quale lingua è utilizzata come default, ecc...
Possiamo pertanto ricavare informazioni utili sulla navigazione da parte dell'utente e in base ad esse gestire di conseguenza eventuali azioni o messaggi da comunicare.
C'è da dire comunque che alcune di queste informazioni necessitano di essere ponderate perchè, per via anche del continuo raggiungimento della compatibilità tra browser, alcune informazioni possono essere discordanti se non addirittura fuorvianti.
Vediamo di seguito un esempio per capire meglio questo concetto:
<input type="button" value="ottieni informazioni sul browser che stai utilizzando" onclick="getInfoBrowser();" />
<script type="text/javascript">
function getInfoBrowser() {
alert("Il browser che stai usando ha le seguenti caratteristiche: " + "
" +
"Code nome browser: " + navigator.appCodeName + "
" +
"Nome browser: " + navigator.appName + "
" +
"Piattaforma e versione del browser: " + navigator.appVersion + "
" +
"Lingua del browser: " + navigator.browserLanguage + "
" +
"Cookie abilitati o meno: " + navigator.cookieEnabled + "
" +
"Classe della CPU: " + navigator.cpuClass + "
" +
"Lingua del browser (altro tipo): " + navigator.language + "
" +
"Sistema online o meno: " + navigator.onLine + "
" +
"Piattaforma: " + navigator.platform + "
" +
"Lingua di default di sistema: " + navigator.systemLanguage + "
" +
"Agente utente HTTP: " + navigator.userAgent + "
" +
"Lingua impostata dall'utente: " + navigator.userLanguage + "
"
);
}
</script>
Provando ad eseguire il codice di cui sopra su diversi browser è facile notare che non tutte le proprietà danno un risultato effettivo su tutti gli user-agent (alcune restituiscono undefined), inoltre non tutte le proprietà comunicano un'informazione chiara, ad esempio la proprità appCodeName restituisce "Mozilla" anche se eseguita con Internet Explorer o con Google Chrome oppure la proprietà browserLanguage restituisce il risultato sperato su Internet Explorer ma non su Firefox o su Chrome a differenza della proprietà language che risponde bene su tutti i browser. E di questi esempi ce ne sono altri, basta effettuare delle prove per rendersi conto che alcune proprietà non sono affidabili mentre per altre come appVersion, restituendo una stringa più o meno dettagliata, necessitano di un parse per poter risalire effettivamente alla versione del browser in uso.
Per quanto mi riguarda ho trovato molto utile la proprietà onLine per gestire le operazioni in caso di mancanza di connessione e in particolar modo cookieEnabled che, anche se ad oggi il mancato utilizzo dei cookie impedisce in molti casi la navigazione, ci informa se con l'utente di turno è possibile lavorare assegnando dei cookie di navigazioni per poter inviare messaggi pubblicitari o promozionali o semplicemente per capire se ha la possibilità di creare un carrello in un commercio elettronico o se è il caso di avvisarlo che senza l'abilitazione dei cookie il sito in questione può perdere di funzionalità.
Di seguito l'esempio prima citato in formato JSFiddle dove potrete verificare personalmente il risultato eseguendolo con browser differenti:
Nessuno ha ancora commentato questo articolo, fallo tu per primo!
Scrivi un Commento