46

chrome 扩展指南有一个旧分析安装教程:https ://developer.chrome.com/extensions/tut_analytics.html

说明只是说链接到 https 版本并更新清单以允许从该 URL 加载脚本。所以这些应该仍然适用于新版本。事实上,我可以看到从服务器加载的脚本。

一旦脚本加载分析不会正确初始化它自己并且永远不会处理它的内部队列(ga.f)以将这些事件发送到服务器。控制台中没有错误。它只是静静地什么都不做。

我的猜测是,新的 Universal Analytics 只是没有设置为在扩展环境中运行,但通用文档没有提到这一点:https ://developers.google.com/analytics/devguides/collection/analyticsjs/

有谁知道是否可以将 Universal Analytics 添加到扩展程序中以及何时添加?

4

6 回答 6

40

谷歌代码有一个问题:解决方案是以官方方式通过分析您自己的协议检查功能或简单地null不检查。

这必须在之后 ga('create', ...)

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

所以您不需要修改原始的 analytics.js 脚本。只需包含标准跟踪代码片段(不要忘记添加“https:”前缀)并将“ https://www.google-analytics.com ”添加到您的内容安全政策。

对 ayal gelles 解决方案的说明:无需添加chrome-extension://...到内容安全策略中,因为它已包含在'self'声明中。此外,您应该使用chrome.runtime.getURL("path/to/analytics.js"). 这样您就不需要知道扩展程序的 ID,Chrome 会为您填写。

于 2014-03-03T16:46:03.103 回答
32

我为此写了一篇博文 -如何将 Google 的 Universal Analytics 跟踪添加到 Chrome 扩展程序

这是它的胆量:

// 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 点:

  • 在脚本地址的开头指定“https”以匹配 manifest.json 文件中的列表
  • checkProtocolTask用空函数覆盖
  • 通过指定路径发送虚拟综合浏览量 – /options.html– 否则 Google Analytics 将拒绝该格式的 URLchrome-extension://gdocgfhmbfbbbmhnhmmejncjdcbjkhfc/options.html
于 2014-06-11T14:14:20.583 回答
9

我刚刚遇到这个,似乎已经破解了我的方式。这可能会在某些时候中断或无法完全发挥作用,但这里有:

  • 从这里下载 GA uglified+minified 源代码:https: //www.google-analytics.com/analytics.js,放入您的 chrome 扩展文件夹,稍后可以由后台页面加载。

  • 在其中,找到一个看起来像这样的函数:

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

这是“失败点”,因为我们的“协议”是“chrome-extension:”,而不是两者中的任何一个。

  • 所以..将此功能更改为:
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 回答
2

我设法使用Chrome 平台分析(CPA) 启动并运行 Google Analytics。唯一令人困惑的部分是如何在 GA 的管理控制台中设置属性。我必须创建一个移动应用程序属性,这不太直观。

此外,我创建了一个选项页面,允许用户在需要时禁用分析,以符合退出要求。

我希望这会有所帮助!

于 2014-05-08T09:26:07.747 回答
1

有一种方法可以使用 Measurement Protocol 与 Google Analytics(分析)进行通信。我为此开发了一个脚本:

https://github.com/melalj/universal-ga-extension

于 2013-07-18T13:16:19.387 回答