2012-07-07 3 views
12

Ich arbeite an einer Google Chrome-Erweiterung, die bestimmte Seiten mit einem Inhaltsskript ändert. Um zu verstehen, wann und wo diese Änderungen angewendet werden, haben wir uns mit Google Analytics beschäftigt, da wir es bereits für andere Web-Eigenschaften verwenden.Inhalt Skript-Tracking mit Google Analytics

Wir fügen die Bibliothek ga.js über die Manifestdatei hinzu und lösen _trackPageview mit einem synchronen Seitenaufruf aus, wenn wir eine Änderung auf eine Seite anwenden.

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

Problem hier ist, dass jedes pageView in einer anderen Domäne als neuer Besuch und Besucher zählt. Es gibt eine Möglichkeit, das zu umgehen? Zum Beispiel verwendet es eine Chrome-Extension-SQLite-Datenbank oder einen Schlüsselwertspeicher im Browser, um eine eindeutige Benutzer-ID zu speichern und die ID-Domäne unabhängig zu besuchen. Ist das möglich?

Danke

Antwort

18

Sie sollten diesen Code nicht in anderen Personen-Websites ausführen. Die Google Analytics-Konfiguration ist etwas sensibel. Wenn eine Website eine benutzerdefinierte Implementierung enthält, können Sie diese für den betreffenden Besucher möglicherweise deaktivieren.

Sie sollten Google Analytics in Ihre eigene Hintergrundseite einfügen. Und dann kommunizieren Sie aus dem content_script jedes Mal mit Ihrer Hintergrundseite, wenn Sie ein Ereignis verfolgen müssen.

Durch die Aufnahme der GA-Skript auf Ihrem Hintergrund Skript ist schön, weil Sie nicht mit anderem Code auf der Website stören und es immer von der gleichen Domäne ausführen und damit die gleichen Cookies verwenden keine doppelten Besuche/Besucher verursachen.

Hier finden Sie weitere Informationen zur Installation von GA auf Ihrer Hintergrundseite.

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

Und hier ist die Dokumentation für Informationen aus dem Inhalt Scripts auf Ihren Hintergrund Seite vorbei:

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

+1

Gute Idee mit der Hintergrundseite. Lass mich das versuchen. Ich sah die GA-Erweiterung, aber es scheint, dass dies nur für Popup gilt. Danke für den Tipp nochmal. Ich poste hier, wenn das funktioniert. –

+1

Hintergrundseite hat es geschafft! –

+0

Ist es in Ordnung, Analytik in iFrame zu setzen, die über die Chrome-Erweiterung injiziert wird? –

3

Wie Eduardo sagte in seiner Antwort, die Sie eine Hintergrundseite benötigen, damit getan werden kann, wie folgt aus:

in Ihrer manifest.json Datei:

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

in content_scripts.js wann immer Sie wollen Ereignis verfolgen, eine Nachricht an den Hintergrund Seite senden dieses Ereignis auszulösen.

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