46

Chrome 拡張ガイドには、古い分析インストールのチュートリアルがあります: https://developer.chrome.com/extensions/tut_analytics.html

手順では、https バージョンにリンクし、マニフェストを更新して、その URL からスクリプトをロードできるようにするだけです。したがって、それらは新しいバージョンにも適用されるはずです。実際、スクリプトがサーバーからロードされているのがわかります。

スクリプトが読み込まれると、分析はそれ自体を適切に初期化せず、内部キュー (ga.f) を処理してそれらのイベントをサーバーに送信することはありません。コンソールにエラーはありません。黙って何もしないだけです。

私の推測では、新しいユニバーサル アナリティクスは拡張環境で実行するように設定されていませんが、ユニバーサル ドキュメントではそれについて言及されていません: https://developers.google.com/analytics/devguides/collection/analyticsjs/

ユニバーサル アナリティクスを拡張機能に追加することさえ可能かどうか、いつ追加される可能性があるかを知っている人はいますか?

4

6 に答える 6

32

これについてブログ記事を書きました - 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('send', 'pageview', '/options.html');

特に強調したい3つのポイントがあります。

  • manifest.json ファイルのリストと一致するように、スクリプト アドレスの先頭に「https」を指定します。
  • checkProtocolTask空の関数でオーバーライド
  • パスを指定して仮想ページビューを送信します – /options.html– そうしないと、Google アナリティクスは次の形式の URL を拒否しますchrome-extension://gdocgfhmbfbbbmhnhmmejncjdcbjkhfc/options.html
于 2014-06-11T14:14:20.583 に答える
9

私はこれに遭遇したばかりで、自分の道をハッキングしたようです。これはある時点で壊れるか、完全に機能しない可能性がありますが、次のようになります。

  • https://www.google-analytics.com/analytics.jsから GA の uglified+minified ソース コードをダウンロードし、chrome 拡張機能フォルダーに配置します。このフォルダーは、後でバックグラウンド ページによって読み込まれる可能性があります。

  • その中で、次のような関数を見つけます。

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

私たちの「プロトコル」は「chrome-extension:」であり、2 つのどちらでもないため、これが「障害点」です。

  • したがって、この関数を次のように変更します。
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 スニペットを同じファイルを指す ALSO に変更します。
(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');

お役に立てれば。

于 2013-07-21T09:22:03.257 に答える
2

新しいanalytics.js(古い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'"
...
}
于 2015-04-04T20:16:52.263 に答える