首页 文章

使用Google Analytics跟踪内容脚本

提问于
浏览
14

我正在使用Google 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域 . 这可能吗?

谢谢

2 回答

  • 5

    您不应该在其他人站点内执行该代码 . Google Analytics配置有点敏感,如果网站有自定义实施,您可能会为该访问者打破它 .

    您应该在自己的背景页面中添加Google Analytics . 每次需要跟踪事件时,都会从content_script返回到后台页面 .

    通过在后台脚本中包含GA脚本很好,因为您不会干扰网站上的其他代码,并且它始终从同一个域执行,因此将使用相同的cookie而不会导致重复的访问/访问者 .

    以下是有关如何在背景页面上安装GA的更多信息 .

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

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

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

  • 21

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

    在您的 manifest.json 文件中:

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

    content_scripts.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']);
            }
        });
    

相关问题