2013-04-18 91 views
2

我有一個表格提交給另一個我沒有的域名,需要在Google Analytics中跟蹤事件。我寧願做沒有jQuery來避免依賴,但我不理解爲什麼這個代碼不工作:谷歌分析表格提交事件跟蹤

<form action='example.com/search' onsubmit='trackSubmit()' id='frm'> 
    <button type='submit'>Search</button> 
</form> 

<script type='text/javascript'> 
function trackSubmit(e) { 

    var bForm = document.getElementById('frm'); 

    bForm.addEventListener('submit', function(e){ 
    e.preventDefault(); 
    _gaq.push('_trackEvent', 'Foobar', 'Foobar Form Submit'); 
    setTimeout(function(){ 

     console.log('tracking foobar'); 
     bForm.submit(); 

    }, 1000); 
    }, false); 

} 
</script> 

回答

4

onsubmit='trackSubmit()'bForm.addEventListener('submit', function(e){

這似乎是錯誤的部分。如果您撥打submit調用trackSubmit(),那麼在此函數內部添加一個監聽器是無用的,它甚至不會觸發。我相信這應該只是:

<form action="http://example.com/search" onsubmit="return trackSubmit()" id="frm"> 
    <button type="submit">Search</button> 
</form> 

<script type="text/javascript"> 
function trackSubmit() { 
    var frm = document.getElementById('frm'); 

    _gaq.push('_trackEvent', 'Foobar', 'Foobar Form Submit'); 
    setTimeout(function(){ 

     console.log('tracking foobar'); 
     frm.submit(); 

    }, 1000); 

    return false; 

} 
</script> 
+1

謝謝Jakub,它看起來不錯,但我仍然無法看到在Google Analytics中註冊的事件。不確定在它出現之前是否有某種延遲。 – Lorenzo

+0

查看[其他問題](http://stackoverflow.com/questions/4086587/track-event-in-google-analytics-upon-clicking-form-submit?rq=1),GA本機有答案回調函數來避免setTimeout實踐,這可能是問題所在。另外,從我自己的經驗來看,你是否檢查今天的統計數據? :d –

0

這將是可重複使用的多個提交跟蹤。

<script type="text/javascript"> 
    function trackSubmissions(form, category, name, value) { 
     try { 
      _gaq.push(['_trackEvent', category, name, value]); 
     } catch(err){} 
     setTimeout(function() { 
      form.submit(); 
     }, 100); 
    } 
</script> 

<form onsubmit="trackSubmissions(this, 'category', 'name', 'value'); return false;"> 
</form> 
0

對於已經無意中發現此問題並正在使用谷歌通用分析新版本的用戶。 這是提交按鈕和鏈接點擊

<script type='text/javascript'> 
     function trackSubmit() { 


     ga('send', 'event', 'button', 'click', 'searchsubmit', 4); 
      alert('testing send event') 
     } 

     function trackClick() { 
      ga('send', 'event', 'button', 'click', 'This is coool'); 
     } 
    </script> 

    <body> 
    Pushing data....... 

     <form onsubmit='trackSubmit()' id='frm'> 
      <button type='submit' id= 'searchsubmit'>Search</button> 

      </br> 
      <a href='http://cool.com' onclick="trackClick(); return false;">cool</a> 
     </form> 

    </body> 

我已經把警報顯示,該事件被解僱了,因爲當頁面提交,你會看到在調試器控制檯的代碼,你的事件將不會被可見。

enter image description here