2013-04-21 42 views
38

Chrome擴展指南中包含舊分析安裝教程:https://developer.chrome.com/extensions/tut_analytics.html如何將Universal Analytics集成到Chrome擴展中?

說明只是說要鏈接到https版本並更新清單以允許從該URL加載腳本。所以這些應該仍然適用於新版本。事實上,我可以看到從服務器加載的腳本。

一旦腳本加載分析沒有正確初始化它自己,並且從不處理它的內部隊列(ga.f)將這些事件發送到服務器。控制檯中沒有錯誤。它只是安靜地無所事事。

我的猜測是,新的通用Analytics(分析)是不成立的擴展環境中運行,但普遍的文檔沒有提及的是:https://developers.google.com/analytics/devguides/collection/analyticsjs/

沒有人知道,如果它甚至有可能加入通用Analytics(分析)還有什麼時候可以添加?

+0

我會想象它會將ga.js替換爲analytics.js並將事件/頁面跟蹤功能從_gaq.push(...更改爲ga('send').. – vly 2013-04-21 23:31:30

+1

我想象到了同樣的事情。但我們都很驚訝。 – StefanHayden 2013-08-03 00:48:17

回答

9

我正好遇到這一點,似乎可以透過已經破解我的方式。這可能會在某些時候打破或不充分發揮作用,但在這裏有雲:

  • 下載GA變醜從+精縮源代碼在這裏:https://www.google-analytics.com/analytics.js,把你的瀏覽器擴展程序文件夾,它可以通過在以後加載背景頁面。

  • 在這裏面,發現看起來像這樣的功能:

function Oa(){var a=M[B][E];if("http:"!=a&&"https:"!=a)throw"abort";}. 

這是因爲我們的「協議」中的「故障點」是「鉻擴展名:」和也不的兩個。

  • 所以..改變這個功能是這樣的:
function Oa(){var a=M[B][E];if("chrome-extension:"!=a&&"http:"!=a&&"https:"!=a)throw"abort";} 
  • 添加這種「內容安全策略」,以你的清單文件,確保它指向本地analytics.js的版本你剛纔修改:
"content_security_policy": "script-src 'self' chrome-extension://EXTENSIONID/path/to/analytics.js; object-src 'self'", 
  • 更改GA片段也指向了同一個文件,是這樣的:
(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','chrome-extension://EXTENSIONID/path/to/analytics.js','ga'); 

希望這會有所幫助。

+1

哇。瘋!感謝您的破解! – StefanHayden 2013-08-03 00:47:35

+3

直到Google開始實現他們自己的Chrome擴展程序之前,一個出色的解決方案不支持他們的* new * Analytics產品。我的意思是,你有多傻? ;-) – 2013-09-05 07:48:14

+1

令人驚歎的謝謝你。唯一的問題是測試,因爲ID尚不知道...但也可以被黑客入侵,谷歌將最終修復它。 – 2013-12-01 21:35:00

30

有對於在谷歌代碼issue:解決的辦法是通過分析你自己的協議檢查功能或者乾脆null因爲沒有檢查,在official way

這有後ga('create', ...)

ga('set', 'checkProtocolTask', null); // Disable file protocol checking. 

所以你不需要修改原來的analytics.js腳本。只需添加標準的跟蹤代碼段(不要忘記添加「https:」前綴),並在您的內容安全政策中添加「https://www.google-analytics.com」。

ayal gelles解決方案的注意事項: 因爲它已包含在'self'聲明中,所以沒有必要將chrome-extension://...添加到內容安全策略中。另外,不應通過硬編碼URL加載腳本,而應使用chrome.runtime.getURL("path/to/analytics.js")。這樣您就不需要知道您的分機號,Chrome會爲您填寫。

+0

你好,你能提供一些關於這方面的更多信息嗎?我嘗試添加'checkProtocolTask​​',但它不會改變任何東西。 GA似乎還沒有報道任何內容 - 至少實時視圖保持空白。 – dvcrn 2014-03-12 15:53:23

+2

我只從鏈接問題中獲得了答案。這對我來說可以。 Chrome開發者工具顯示的請求會轉到「http://www.google-analytics.com/collect」,並且在我的GA實時視圖中,我可以看到這些值。更多代碼(您也可以查看更改後的代碼我的擴展:http://goo.gl/jpmci6): 'ga('create','UA-41499181-1','auto'); ('set','checkProtocolTask​​',function(){}); ga('send','pageview');' – 2014-03-17 11:09:55

+0

請注意,這不適用於內容腳本!看到這裏,如果這就是你需要:http://stackoverflow.com/questions/10285886/chrome-extension-adding-external-javascript-to-current-pages-html – MasterScrat 2014-06-04 09:05:05

2

我設法使用Chrome Platform Analytics(CPA)啓動並運行Google Analytics。唯一令人困惑的部分是如何在GA的管理控制檯中設置屬性。我不得不創建一個移動應用程序屬性,這不太直觀。

此外,我創建了一個options page,允許用戶在需要時禁用分析,以符合opt-out的要求。

我希望有幫助!

17

我寫了這個博客帖子 - How to add Google’s Universal Analytics tracking to a Chrome extension

下面是它的膽量:

// Standard Google Universal Analytics code 
(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','https://www.google-analytics.com/analytics.js','ga'); // Note: https protocol here 

ga('create', 'UA-XXXXX-YY', 'auto'); 
ga('set', 'checkProtocolTask', function(){}); 
ga('require', 'displayfeatures'); 
ga('send', 'pageview', '/options.html'); 

有3點我特別想強調:

  • 指定腳本地址開頭的「https」與manifest.json文件中的列表匹配
  • 覆蓋 - - 否則谷歌分析將在格式chrome-extension://gdocgfhmbfbbbmhnhmmejncjdcbjkhfc/options.html
+1

在這裏工作! – atwellpub 2014-10-30 03:27:20

+0

我試過一個基本的擴展,只是打開popup .html與popup.js(如選項)沒有運氣。 – 2015-08-03 19:49:44

0

關於新的analytics.js拒絕URL(如相對舊的ga.js)用空功能

  • 通過指定路徑發送一虛擬網頁瀏覽這個例子對我的作品:

    function setupGoogleAnalytics() { 
        if (!window.ga) { 
        (function(){ 
         window.ga = function() { 
         (window.ga.q = window.ga.q || []).push(arguments); 
         }, window.ga.l = 1 * new Date(); 
         var tag = 'script'; 
         var a = document.createElement(tag); 
         var m = document.getElementsByTagName(tag)[0]; 
         a.async = 1; 
         a.src = 'https://www.google-analytics.com/analytics.js'; 
         m.parentNode.insertBefore(a, m); 
        })(); 
        ga('create', 'UA-XXXXXXX-Y', 'auto'); 
        ga('set', 'checkProtocolTask', null); 
        } 
    } 
    

    請注意,您需要添加以下content_security_policy片斷對於manifest.json:

    { 
    ... 
        "content_security_policy": "script-src 'self' https://www.google-analytics.com; object-src 'self'" 
    ... 
    } 
    
  • 相關問題