2012-07-07 122 views
12

我正在研究使用内容脚本修改某些网页的Google Chrome扩展程序。为了理解这些更改何时何地应用,我们正在研究谷歌分析,因为我们已经将其用于其他网络媒体资源。使用Google Analytics(分析)跟踪内容脚本

我们通过清单文件包含ga.js库,并在我们将更改应用到页面时触发带有同步页面调用的_trackPageview。这里

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

麻烦的是,在不同的领域各综合浏览量计数作为一个新的参观游客。它有办法规避这种情况吗?例如,它在浏览器中使用chrome扩展sqlite数据库或键值存储来存储唯一的用户ID和独立访问ID域。这可能吗?

谢谢

回答

18

您不应该在其他人的网站内执行该代码。 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

+1

与背景页面好主意。让我尝试一下。我看到了GA扩展指令,但它似乎只适用于弹出窗口。再次感谢您的提示。如果这个工作,我在这里发布。 – 2012-07-07 11:29:24

+1

背景页做到了! – 2012-07-07 12:36:30

+0

可以在通过Chrome扩展注入的iframe中进行分析吗? – 2017-10-26 19:03:45

3

正如爱德华多在他的回答,你需要一个背景页说,这样可以做到像这样:

在您的manifest.json file:

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

in 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']); 
     } 
    }); 
相关问题