Introduzione a ga.js (legacy)

ga.js è una libreria JavaScript per misurare il modo in cui gli utenti interagiscono con il tuo sito web. Questa è una libreria precedente. Se hai iniziato a usare Google Analytics, ti consigliamo di usare la libreria di monitoraggio più recente, analytics.js.

Guida rapida del codice di monitoraggio

Lo snippet Analytics è una piccola porzione di codice JavaScript da incollare nelle pagine. Attiva il monitoraggio di Google Analytics inserendo ga.js nella pagina. Per utilizzarlo sulle tue pagine, copia lo snippet di codice riportato di seguito, sostituendo UA-XXXXX-X con il tuo ID proprietà web. Incolla questo snippet nella pagina del modello del tuo sito web in modo che venga visualizzato prima del tag di chiusura </head>.

Se hai bisogno di eseguire altre operazioni oltre al monitoraggio di base delle pagine, consulta il riferimento al monitoraggio per un elenco dei metodi disponibili nell'API e la Guida all'utilizzo per dettagli sull'utilizzo della sintassi asincrona. Per istruzioni dettagliate sulla configurazione del monitoraggio, consulta l'articolo del Centro assistenza sull'impostazione del monitoraggio.

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

Lo snippet riportato sopra rappresenta la configurazione minima necessaria per monitorare una pagina in modo asincrono. Utilizza _setAccount per impostare l'ID proprietà web della pagina, poi chiama _trackPageview per inviare i dati di monitoraggio ai server di Google Analytics.

Importante: se aggiorni le pagine dallo snippet tradizionale alla versione asincrona più recente, devi prima rimuovere lo snippet di monitoraggio esistente. Non è consigliabile utilizzare entrambi gli snippet insieme nella stessa pagina. Per istruzioni sulla migrazione, consulta Migrazione ad Async.

Come funziona la sintassi asincrona

L'oggetto _gaq è ciò che rende possibile la sintassi asincrona. Agisce come una coda, ovvero una struttura di dati first-in,first-out che raccoglie le chiamate API finché ga.js non è pronta per eseguirle. Per aggiungere qualcosa alla coda, utilizza il metodo _gaq.push.

Per eseguire il push di una chiamata API alla coda, devi convertirla dalla sintassi JavaScript tradizionale in un array di comandi. Gli array di comandi sono semplicemente array JavaScript conformi a un determinato formato. Il primo elemento in un array di comandi è il nome del metodo dell'oggetto tracker che vuoi chiamare. Deve essere una stringa. Gli altri elementi sono gli argomenti che vuoi passare al metodo dell'oggetto tracker. Può trattarsi di qualsiasi valore JavaScript.

Il codice seguente chiama _trackPageview() utilizzando la sintassi tradizionale:

var pageTracker = _gat._getTracker('UA-XXXXX-X');
pageTracker._trackPageview();

Il codice equivalente nella sintassi asincrona richiede due chiamate a _gaq.push.

_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);

Nella sintassi asincrona, la creazione dell'oggetto tracker è implicita, ma dobbiamo comunque impostare l'ID proprietà web per il tracker. Il metodo _setAccount è stato aggiunto per fornire questa funzionalità. Tutti gli altri metodi degli oggetti tracker sono gli stessi sia nel monitoraggio asincrono sia in quello tradizionale. ma solo la sintassi.

Per ulteriori informazioni sulla sintassi asincrona, consulta la sezione Riferimento al monitoraggio per il metodo _gaq.push.

Torna all'inizio

Monitoraggio con i gestori di eventi HTML

La sintassi del monitoraggio asincrono deve essere utilizzata anche dai gestori di eventi DOM. Ad esempio, il seguente pulsante genera un evento quando viene fatto clic.

<button onclick="_gaq.push(['_trackEvent', 'button3', 'clicked'])"></button>

Anche se viene fatto clic su questo pulsante prima che il browser abbia completato il caricamento di ga.js, l'evento verrà acquisito ed eseguito. Utilizzando il monitoraggio tradizionale, il browser potrebbe generare un'eccezione in questa situazione.

Torna all'inizio

Trasferimento di funzioni alla coda

Oltre agli array di comandi, puoi anche eseguire il push degli oggetti delle funzioni nella coda _gaq. Le funzioni possono contenere qualsiasi JavaScript arbitrario e, come gli array di comandi, vengono eseguite nell'ordine in cui vengono inviate a _gaq. Questa tecnica è utile per chiamare le API di monitoraggio che restituiscono valori. Ad esempio, il codice seguente crea un URL linker e imposta la proprietà href per un link con il risultato.

_gaq.push(function() {
  var pageTracker = _gat._getTracker('UA-XXXXX-X');
  var link = document.getElementById('my-link-id');
  link.href = pageTracker._getLinkerUrl('http://example.com/');
});

L'esempio precedente utilizza _gat per creare un oggetto tracker, ma poiché è assegnato a una variabile locale, il codice esterno alla funzione non può utilizzarlo. Sebbene questo sia accettabile, puoi utilizzare il metodo _gat._createTracker per creare un oggetto permanente e accessibile a livello globale. Il seguente codice mostra come funziona.

_gaq.push(function() {
  var pageTracker = _gat._createTracker('UA-XXXXX-X', 'myTracker');
  var link = document.getElementById('my-link-id');
  link.href = pageTracker._getLinkerUrl('http://example.com/');
});

_gaq.push(['myTracker._trackPageview']);

L'esempio riportato sopra crea un tracker asincrono all'interno della funzione e vi fa riferimento in seguito per nome nell'array di comandi.

È possibile anche il caso d'uso opposto. Ad esempio, se devi utilizzare un oggetto tracker asincrono creato tramite un array di comandi di cui è stato eseguito il push in precedenza, utilizza il metodo _gat._getTrackerByName. Il seguente codice ne mostra il funzionamento.

_gaq.push(['myTracker._setAccount', 'UA-XXXXX-X']);

_gaq.push(function() {
  var pageTracker = _gat._getTrackerByName('myTracker');
  var link = document.getElementById('my-link-id');
  link.href = pageTracker._getLinkerUrl('http://example.com/');
});

Torna all'inizio

Una sola pressione, più comandi

Anziché digitare _gaq.push(...) per ogni chiamata, puoi eseguire il push di tutti i comandi contemporaneamente. Il seguente codice dimostra questa tecnica.

_gaq.push(
  ['_setAccount', 'UA-XXXXX-X'],
  ['_setDomainName', 'example.com'],
  ['_setCustomVar', 1, 'Section', 'Life & Style', 3],
  ['_trackPageview']
);

Funziona perché il metodo _gaq.push imita il metodo Array.push, che consente il push di più elementi con una sola chiamata.

Torna all'inizio

Suddividere lo snippet

Se preferisci inserire lo snippet Analytics in fondo alla pagina, tieni presente che non è necessario posizionare l'intero snippet alla fine della pagina. Puoi comunque conservare la maggior parte dei vantaggi del caricamento asincrono dividendo lo snippet a metà: mantieni la prima metà in cima alla pagina e il resto alla fine. Poiché la prima parte dello snippet di monitoraggio ha un impatto minimo o nullo sul rendering della pagina, puoi lasciare questa parte nella parte superiore e inserire la parte dello snippet che inserisce ga.js in fondo.

Una pagina con lo snippet asincrono diviso a metà potrebbe avere il seguente aspetto:

<html>

<head>
  <script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-XXXXX-X']);
    _gaq.push(['_trackPageview']);
  </script>
</head>

<body>
  <p>Page Content</p>

  <script src="some_random_script.js"></script>

  <p>Page Content</p>

  <script type="text/javascript">  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script> </body> </html>

Entrambe le parti di codice devono essere aggregate nei propri tag script, ma solo le ultime sei righe dello snippet asincrono originale devono essere spostate in basso. Tutte le righe che eseguono il push dei metodi su _gaq possono rimanere in alto.

Torna all'inizio

Come evitare gli errori più comuni

Quando utilizzi la sintassi asincrona o tradizionale, tieni presente quanto segue:

  • I nomi dei metodi sono sensibili alle maiuscole.
    Se utilizzi un nome di metodo senza utilizzare le maiuscole e le minuscole corrette, le chiamate al metodo non funzioneranno. Esempi:
    _gaq.push(['_trackpageview']);   // bad
    _gaq.push(['_trackPageview']);   // good
  • Utilizza i nomi dei metodi corretti.
    Se il monitoraggio non funziona correttamente, accertati di utilizzare il nome del metodo corretto. Esempi:
    _gaq.push(['_setDomain', 'example.com']);       // bad
    _gaq.push(['_setDomainName', 'example.com']);   // good
    
  • Solo le stringhe devono essere passate tra virgolette. Tutti gli altri tipi non devono essere tra virgolette.
    Qualsiasi valore che non sia una stringa, come valori booleani, valori letterali oggetto, funzioni o array, deve essere trasmesso senza virgolette. Utilizza solo le virgolette quando trasmetti qualcosa che deve essere interpretato come una stringa. Se stai eseguendo la migrazione dalla sintassi tradizionale, qualsiasi parametro della funzione passato senza virgolette deve rimanere senza virgolette nella sintassi asincrona. Esempi:
    _gaq.push(['_setAllowLinker', 'false']);    // bad
    _gaq.push(['_setAllowLinker', false]);      // good
    
  • Assicurati che le stringhe non contengano spazi vuoti iniziali o finali.
    Esempi:
    _gaq.push(['_setAccount', ' UA-65432-1']);    // bad
    _gaq.push(['_setAccount', 'UA-65432-1']);     // good
    

Torna all'inizio

Disattivazione del monitoraggio

In alcuni casi, può essere necessario disattivare il codice di monitoraggio di Google Analytics in una pagina senza dover rimuovere lo snippet di codice. Ad esempio, puoi procedere in questo modo se le norme sulla privacy del tuo sito prevedono la possibilità per un visitatore di disattivare il monitoraggio di Google Analytics.

Lo snippet di monitoraggio ga.js ora include una proprietà finestra che, se impostata su true, disattiva l'invio dei dati a Google Analytics da parte dello snippet di monitoraggio. Quando Google Analytics tenta di impostare un cookie o di inviare i dati ai server di Google Analytics, verifica se questa proprietà è impostata su true. In questo caso, l'effetto sarà lo stesso che se il visitatore aveva installato il plug-in del browser per la disattivazione di Google Analytics.

Per disattivare il monitoraggio, imposta la seguente proprietà della finestra su true:

window['ga-disable-UA-XXXXXX-Y'] = true;

Dove il valore UA-XXXXXX-Y corrisponde all'ID proprietà web per il quale vuoi disattivare il monitoraggio.

Questa proprietà della finestra deve essere impostata prima della chiamata del codice di monitoraggio. Questa proprietà deve essere impostata su ogni pagina in cui vuoi disattivare il monitoraggio di Google Analytics. Se la proprietà non è impostata o è impostata su false, il monitoraggio funzionerà come di consueto.

Ad esempio, se il codice di monitoraggio di Google Analytics in una pagina include:

_gaq.push['_setAccount', 'UA-123456-1']

Se vuoi impedire che il codice di monitoraggio imposti i cookie o invii nuovamente i dati a Google Analytics, utilizza il seguente codice prima che venga chiamato:

window['ga-disable-UA-123456-1'] = true;

Se utilizzi più tracker in una pagina con più ID proprietà web, devi impostare la variabile window['ga-disable-UA-XXXXXX-Y'] equivalente su true per ogni proprietà web per disattivare completamente il monitoraggio di Google Analytics su quella pagina.

Esempio

Ecco un semplice esempio di codice che puoi utilizzare per fornire agli utenti la funzionalità di disattivazione.

Innanzitutto, aggiungi un nuovo link HTML al tuo sito per eseguire la logica di disattivazione:

<a href="javascript:gaOptout()">Click here to opt-out of Google Analytics</a>

Poi aggiungi il seguente snippet di codice prima dello snippet di codice ga.js. Assicurati di sostituire il valore di gaProperty da UA-XXXX-Y con la proprietà utilizzata sul tuo sito. Si tratta dello stesso valore che passi al comando _setAccount.

<script>
// Set to the same value as the web property used on the site
var gaProperty = 'UA-XXXX-Y';

// Disable tracking if the opt-out cookie exists.
var disableStr = 'ga-disable-' + gaProperty;
if (document.cookie.indexOf(disableStr + '=true') > -1) {
  window[disableStr] = true;
}

// Opt-out function
function gaOptout() {
  document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
  window[disableStr] = true;
}
</script>

Quando un utente fa clic sul link HTML di disattivazione, viene eseguita la funzione gaOptout personalizzata. Imposterà un cookie per un periodo di tempo lungo in futuro e disattiverà la raccolta dei dati analytics.js. Quando un utente torna a questo sito, lo script riportato sopra verifica se il cookie di disattivazione è stato impostato. In questo caso, verrà disattivata anche la raccolta dei dati analytics.js.

Forzare SSL (HTTPS)

Per forzare Google Analytics a inviare sempre i dati tramite SSL, anche da pagine non sicure (HTTP), utilizza il metodo _gat._forceSSL, come in questo esempio:

_gaq.push(['_setAccount', 'UA-12345-1']);
_gaq.push(['_gat._forceSSL']);       // Send all hits using SSL, even from insecure (HTTP) pages.
_gaq.push(['_trackPageview']);

Torna all'inizio