使用Google Analytics进行内容脚本跟踪



我正在开发一个谷歌Chrome扩展,它可以用内容脚本修改某些页面。为了了解这些变化在何时何地应用,我们研究了谷歌分析,因为我们已经将其用于其他网络属性。

我们通过清单文件包含ga.js库,并在对页面进行更改时通过同步页面调用触发_trackPageview。

var pageTracker = _gat._getTracker("UA-our-UA");    
pageTracker._setDomainName("none");
pageTracker._setAllowLinker(true);    
pageTracker._trackPageview(window.location.href);

这里的问题是,不同域中的每个pageView都被视为新的访问和访问者。有办法绕过它吗?例如,它在浏览器中使用chrome扩展sqlite数据库或键值存储来存储唯一的用户id和独立于域的访问id。这可能吗?

感谢

您不应该在其他人员站点内执行该代码。Google Analytics的配置有些敏感,如果一个网站有一个自定义实现,你可能会为该访问者破坏它。

你应该在自己的背景页面中包含谷歌分析。然后在每次需要跟踪事件时从content_script返回到后台页面进行通信。

在后台脚本中包含GA脚本是很好的,因为你不会干扰网站上的其他代码,而且它总是从同一个域执行,因此将使用相同的cookie,不会导致重复的访问/访客。

以下是有关如何在后台页面上安装GA的更多信息。

https://developer.chrome.com/docs/extensions/mv2/tut_analytics/

以下是将信息从内容脚本传递到后台页面的文档:

http://code.google.com/chrome/extensions/messaging.html

正如Eduardo在回答中所说,你需要一个背景页面,这样就可以做到:

manifest.json文件中:

,
"content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'"
,

contentscripts.js中,只要您想跟踪事件,就向后台页面发送一条消息来触发该事件。

chrome.runtime.sendMessage({action: "yourEvent"});

background.js

    (function() {
      var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      ga.src = 'https://ssl.google-analytics.com/ga.js';
      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    })();
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
    // here we receive the coming message from the content script page
    chrome.runtime.onMessage.addListener(function( request, sender, sendResponse ) {
        if(request.action == "yourEvent"){
            _gaq.push(['_trackEvent', "eventCategory", 'eventType']);
        }
    });

最新更新