MICHELEPISANI.IT

Guida al DOM

Ottenere informazioni del browser e dal browser

L'oggetto navigator

Agosto 04
07:322014

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:




Tags
Condividi

Autore

Michele Pisani

Michele Pisani

Ho uno spiccato orientamento al problem-solving, se è troppo facile non mi diverto :)
Credo nella volontà e nel cambiamento perchè hanno fatto della mia passione il mio pane quotidiano.
Se devo descrivermi con una sola parola direi... "Concretezza", la mia stretta di mano è una garanzia.

0 Commenti

Non ci sono commenti

Nessuno ha ancora commentato questo articolo, fallo tu per primo!

Scrivi un Commento

Scrivi un Commento

Il tuo indirizzo email non sarà pubblicato.
I campi contrassegnati da un * sono obbligatori

Articoli e Argomenti correlati

Categorie popolari

Iscriviti alla mia newsletter

La tua e-mail con me sarà al sicuro.
Non fornirò mai le tue informazioni a nessuno!

Ultimi commenti

Francesco

Ciao Michele, ti ringrazio per l'articolo. Potresti spiegare il significato della parte …

Michele

Ciao domenico,
hai provato con

Michele

Ciao Luca,
hai provato a contattare l'assistenza di Facebook? Attualmente la via migliore …

domenico

ciao, puoi aiutarmi?

ho creato un form che tramite una chiamata mi restituisce una …