2013-10-21 5 views
7

Sto tentando di aggiungere il tracciamento degli eventi di analisi a un evento onclick per un input di invio su un modulo.Attivazione di un evento di analisi di Google sul modulo inviare

Ho provato più esempi diversi e ho fatto riferimento a un paio di post SO diversi per arrivare a questo punto. Sono in grado di ottenere l'onclick per inviare il modulo OPPURE attivare l'evento di tracciamento ma non entrambi.

Primo esempio: (forma Sottopone + registri per console, ma non si aziona evento)

<!-- Analytics tracking code --> 

<form action="test.php" id="form" method="post"> 

    <input type="text" name="name" id="name"> 

    <!-- Submits form + logs to console but doesn't fire event --> 

    <input type="submit" name="submit" value="Submit" onclick=" 
     var _this = this; 
     _gaq.push(
      ['_trackEvent', 'Forms', 'Submit', 'Home Contact'], 
      function() { 
       console.log('submitting'); 
       $(_this).parents('form').submit(); 
      } 
     ); 
    "> 

</form> 

secondo esempio: (evento si attiva + registri per console, ma non inviare il modulo)

<!-- Analytics tracking code --> 

<form action="test.php" id="form" method="post"> 

    <input type="text" name="name" id="name"> 

    <!-- Fires event + logs to console but doesn't submit form --> 

    <input type="submit" name="submit" value="Submit" onclick=" 
     var _this = this; 
     _gaq.push(['_set','hitCallback',function(){ 
      console.log('submitting'); 
      $(_this).parents('form').submit(); 
     }]); 
     _gaq.push(
      ['_trackEvent','My category','My action'] 
     ); 
     return !window._gaq; 
    "> 

</form> 

Ho anche scoperto che se aggiungo return false alla fine dell'evento onclick del primo esempio, si attiva il tracciamento dell'evento Analytics ma non si invia il modulo.

risposta

5

(Questo ha davvero bisogno di essere un FAQ ...)

Google Analytics registra dati richiedendo un'immagine dai server di analisi, con i dati di tracciamento come parametri sulla richiesta di immagine. Se una nuova pagina viene visualizzata nella finestra corrente immediatamente dopo _trackEvent o _pageView, la richiesta di immagine può essere annullata e nessun dato registrato.

Lo schema normale consiste nell'aggiungere un piccolo ritardo prima di caricare una nuova pagina o inviare un modulo.

Prova

<input type="submit" name="submit" value="Submit" onclick=" 
    var _this = this; 
    _gaq.push(['_trackEvent', 'Forms', 'Submit', 'Home Contact']); 
    setTimeout(function() {$(_this).parents('form').submit()}, 150); 
    return false;" 
> 

La mia preferenza è legano al jQuery pubblica un evento sul modulo stesso, come

$('#form').submit(function(e){ 
    e.preventDefault(); 
    _gaq.push(['_trackEvent', 'Forms', 'Submit', 'Home Contact']); 
    var form = this; 
    setTimeout(function(){ form.submit()}, 150); 
}); 
+0

ho modificato questa per avere un timeout 1 sec + aggiunto un mancante [nelle analisi spingono codice. Il tracciamento degli eventi ha funzionato ma il modulo non è stato inviato. – James

+1

Mi spiace per l'errore di battitura (e il ritardo mancante su setTimeout!) - è necessario solo un breve ritardo, 150 ms sembra funzionare. Ho anche aggiunto un esempio alternativo. – mike

+0

Ancora non riesco a farlo funzionare, entrambi attivano l'evento di analisi ma nessuno dei due invierà il modulo. Non posso fare a meno di sentirmi mancare qualcosa di ovvio. – James

Problemi correlati