Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 63 di 112
  • livello avanzato
Indice lezioni

Informazioni sul browser, l'oggetto navigator

L'oggetto navigator e le modalità per riconoscere il browser e le caratteristiche dell'applicazione client.
L'oggetto navigator e le modalità per riconoscere il browser e le caratteristiche dell'applicazione client.
Link copiato negli appunti

Per ottenere informazioni sul browser corrente e su alcune sue impostazioni possiamo utilizzare la proprietà navigator di window. Questa proprietà fornisce informazioni che dovrebbero consentirci di identificare il browser ed il sistema operativo su cui è in esecuzione, ma non sempre le informazioni sono così utili ed accurate. Ad esempio, alcune proprietà dell'oggetto navigator, come appCodeName e product, restituiscono dei valori costanti indipendentemente dal browser: Mozilla nel primo caso e Gecko nel secondo. Il motivo è legato a questioni storiche di compatibilità.

Anche la proprietà appName, che dovrebbe restituire il nome del browser, restituisce valori non sempre attinenti. Ad esempio, Firefox, Chrome e Safari restituiscono la stringa "Netscape", mentre Internet Explorer restituisce la stringa "Microsoft Internet Explorer" e Opera la stringa "Opera".

La proprietà appVersion restituisce una stringa che contiene la versione del browser, ma anche in questo caso non c'è uniformità nella risposta fornita dai vari browser. Ad esempio, Firefox restituisce una stringa analoga alla seguente:

5.0 (Windows)

mentre Chrome restituisce una stringa come questa:

5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36

Quindi anche in questo caso il risultato non è standardizzato.

Identificare il browser: User Agent vs Feature Detection

Utilizzare queste informazioni per identificare il browser corrente richiede una serie di accorgimenti che però non sempre garantiscono il risultato atteso.

Un approccio molto utilizzato per identificare il browser corrente è basato sull'analisi della user agent string, cioè del contenuto dell'intestazione HTTP inviata dal browser al server. Questa stringa è recuperabile tramite la proprietà userAgent dell'oggetto navigator.

Ecco un esempio di codice che individua il browser corrente in base all'analisi della proprietà userAgent:

function getBrowserName() {
  var browserNames = ["Chrome", "Firefox", "MSIE", "Opera", "Safari"];
  for(var i in browserNames) {
  if (window.navigator.userAgent.indexOf(browserNames[i]) > -1) break
  }
  return browserNames[i];
}

L'identificazione del browser corrente spesso viene utilizzata per stabilire se una data funzionalità viene supportata o meno. Considerato il numero crescente di browser, a cui contribuiscono anche le versioni mobile, ed il loro frequente aggiornamento, questa tecnica non è più affidabile.

Feature detection

L'approccio migliore consiste nell'assicurarsi direttamente se una caratteristica è supportata o meno, ad esempio verificando se l'oggetto o il metodo che implementa la funzionalità è diverso da undefined.

L'uso dell'oggetto navigator può comunque risultare utile per stabilire se l'utilizzo dei cookie è abilitato, se il browser è online e qual è la lingua preferita dall'utente. A ciascuna caratteristica corrisponde una proprietà:

console.log(window.navigator.cookieEnabled);
console.log(window.navigator.onLine);
console.log(window.navigator.language);

Mentre le proprietà cookieEnabled e online restituiscono un valore booleano, la proprietà language restituisce il codice della lingua impostata dall'utente come preferita.

Ti consigliamo anche