2013-09-23 114 views
2

我有加載到iframe一個谷歌分析跟蹤:爲什麼Google Analytics事件不會觸發/保存?

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 

    ga('create', 'UA-my-id-here'); 
    ga('set', 'location', 'http://foo.com/bar'); 
    ga('set', 'title', 'Awesome'); 

    ga('send', 'pageview'); 

我也得到了自定義JavaScript試圖跟蹤在同一頁面上的富客戶端應用程序,它具有對參考事件ga實例,並嘗試發送一個事件:

ga('send', 'event', 'my_category', 'my_event', 'my_value'); 

當我加載頁面時,我看到正確跟蹤的初始瀏覽量。當我點擊並觸發自定義事件跟蹤時,JavaScript會執行並不會引發錯誤。它也沒有註冊任何事件。

+0

你確定它沒有試圖觸發,你很快就會被重定向到一個新頁面?你的代碼執行它是什麼樣的?使用Fiddler或Charles Proxy等HTTP代理工具,您是否看到請求? – MisterPhilip

+0

我有一個JS應用程序在頁面上使用jQuery來跟蹤點擊事件和交互。我使用Chrome Inspector來監視網絡請求和JS控制檯的調試語句或錯誤。我看到最初的AJAX調用來跟蹤綜合瀏覽量,但沒有任何事件。 – Winfield

回答

0

的問題最終是JavaScript的作用域的問題。

analytics.js應用程序僅適用於所有調用在相同的Javascript範圍內適當的情況。我試圖在不同的頁面範圍內觸發GA事件(由於嵌入式JS應用程序和iFrames,它很複雜)。

的解決方案是以下幾點:

<script type="text/javascript"> 
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 

    ga('create', 'UA-my-id'); 
    ga('set', 'hostname', 'awesome.com'); 
    ga('set', 'location', '/path/to/awesome'); 
    ga('set', 'referrer', 'REFERRER_VALUE'); 
    ga('set', 'title', 'Awesome App'); 

    ga('send', 'pageview'); 

    window.trackGAEvent = function(eventName, value) { 
    ga('send', 'event', 'awesome_app', eventName, value); 
    } 
</script> 

訣竅是封裝ga事件send通話。我可以通過深入瞭解DOM從其他上下文中調用此方法,但我無法直接從正確的上下文中調用GA應用程序。

0

確保網頁你想調用下面snippte已加載的analytics.js(如果它在iframe中)

ga('send', 'event', 'my_category', 'my_event', 'my_value'); 
+0

這是我已經使用的代碼。這個問題最終成爲別的,我會發布答案。 – Winfield

相關問題