Gast: GA-Tracking Event nur 1x ausführen

Hallo,

an folgendem "Problem" versuche ich mich aktuell:

Wir haben auf einer unserer Seiten von einem externen Dienstleister einen DIV-Container eingebunden, der ein PDF-Viewer bereitstellt um verschiedene Inhalte "interaktiv" anzuzeigen.

Nun wollen wir die Anzahl der Aufrufe dieses Viewers mittracken wozu ich das ganze Element mit einem zusätzlichen DIV-Container umfasst und hier ein onclick Event hinterlegt habe welches eben beim Anklicken ein entsprechendes Event feuert.

Funktioniert soweit auch ohne Probleme, allerdings habe ich jetzt das Problem, dass man in dem Viewer blättern kann, Rein- und Rauszoomen, ... natürlich alles per Klick. Hat also zur Folge, dass ich n-fach die Aufrufe zähle was so natürlich nicht gewollt ist.

Meine Frage wäre daher ob/wie ich anstelle des Tracking-Aufrufs (onclick="_gaq.push(['_trackEvent',...])) besser eine JS-Funktion aufrufe, die beim ersten Mal eine Variable setzt und nur dann den Event feuert, wenn der Wert der Variable auf 0 oder N steht anstelle von 1 oder J.

Dazu habe ich mal folgendes JS geschrieben:

  
<script>  
  
var alreadyTracked = 'N';  
  
function trackRequest() {  
  
    if( alreadyTracked == 'N' ){  
    	alreadyTracked = 'J';  
    	alert('Jetzt wird getrackt!');  
    	//Wie kann ich aus einer JS-Funktion den Track-Event starten?  
        //_gaq.push(['_trackEvent',....'])  
    }  
    else{  
    	alert('Jetzt wird nicht mehr getrackt.');  
    }  
}  
</script>  

Die alerts werden noch richtig ausgegeben. Jetzt bleiben aber noch 2 offene Punkte:

1. Unsicher bin ich mir bei dem Scope der globalen JS-Variable. Greift die auch nur für den aktuellen Benutzer? Wird nach meinem Verständis ja nur Client-Seitig gesetzt sodass andere Benutzer davon nicht betroffen sind. Und wie lange bleibt der Wert erhalten? Löscht der Anwender seinen Browser-Cache müsste das doch wieder den Initial-Zustand herstellen, oder? Wobei ich beim lokalen Testing festgestellt haben, dass ein Seiten-Reload bereits ausreicht um den Wert der Variable wieder zurück zu setzen...

2. Wie kann ich aus einer JS-Funktion diesen GA-Tracking Event auslösen? Vorher konnte ich das einfach über onclick auf dem Element machen, aber das habe ich hier ja nicht mehr?!

Danke vorab für eure Hilfe!

  1. Moin!

    1. Unsicher bin ich mir bei dem Scope der globalen JS-Variable. Greift die auch nur für den aktuellen Benutzer? Wird nach meinem Verständis ja nur Client-Seitig gesetzt sodass andere Benutzer davon nicht betroffen sind. Und wie lange bleibt der Wert erhalten? Löscht der Anwender seinen Browser-Cache müsste das doch wieder den Initial-Zustand herstellen, oder? Wobei ich beim lokalen Testing festgestellt haben, dass ein Seiten-Reload bereits ausreicht um den Wert der Variable wieder zurück zu setzen...

    die gobale Variable belibt so lang bestehen, wie die Anzeige des Frames besteht, wird der Frame neu geladen oder geschlossen, ist sie weg. der Browsercache hat in diesem sinne nichts damit zu tun. Und ja, es ist rein Clientseitig bzw. sogar Frameseitig, sprich wenn du mehrere Fenster / Tabs davon offen hast, hat jeder seine eigene globale Variable.

    1. Wie kann ich aus einer JS-Funktion diesen GA-Tracking Event auslösen? Vorher konnte ich das einfach über onclick auf dem Element machen, aber das habe ich hier ja nicht mehr?!

    die Frage verstehe ich leider nicht ganz ... ?

    Danke vorab für eure Hilfe!

    LG

      1. Wie kann ich aus einer JS-Funktion diesen GA-Tracking Event auslösen? Vorher konnte ich das einfach über onclick auf dem Element machen, aber das habe ich hier ja nicht mehr?!

      die Frage verstehe ich leider nicht ganz ... ?

      Initial konnte ich folgendes machen:

        
      <div onclick="_gaq.push(['_trackEvent', 'category', 'action','label'])">  
          /* INLINE PDF-Viewer Content */  
      </div>  
      
      

      jetzt habe ich das geändert in:

        
      <div onclick="trackRequest()">  
          /* INLINE PDF-Viewer Content */  
      </div>  
      
      

      Mein Problem ist also, dass ich jetzt nicht mehr weiß wie ich den Aufruf _gaq.push(['_trackEvent', 'category', 'action','label']) in der JS-Funktion eingebettet/aufgerufen bekomme.

  2. Meine Frage wäre daher ob/wie ich anstelle des Tracking-Aufrufs (onclick="_gaq.push(['_trackEvent',...])) besser eine JS-Funktion aufrufe, die beim ersten Mal eine Variable setzt und nur dann den Event feuert, wenn der Wert der Variable auf 0 oder N steht anstelle von 1 oder J.

    Dazu habe ich mal folgendes JS geschrieben:
    <script>

    var alreadyTracked = 'N';

    function trackRequest() {

    Das ist insofern unschön, als dass du den Namensraum, in dem Javascript seine Objekte ablegt, unnötig mit eben zwei Namen bestückst. Das ist oftmals zwar eher eine Frage des guten Stils, aber bei "trackRequest" würde es mich zumindest nicht wundern, wenn es da zufälligerweise noch ein Skript gäbe, das eine gleichlautende Funktion oder Variable nutzt.

    Zweitens bekommst du lauter Klicks gemeldet, die dich überhaupt nicht mehr interessieren. Unter der Last deines Codes wird der Rechner zwar kaum zusammenbrechen und insofern ist das sicher auch eine Stilfrage, aber trotzdem: Unnötige Arbeit.

    Füge dem <div> stattdessen lieber beim Laden der Seite eine Ereignisbehandlung zu, die du gleich beim ersten Auftreten wieder löscht:

    document.addEventListener("DOMContentLoaded", function() {  
      var pdfdiv = document.getElementById("meinpdfdiv");  
      var onclick = function () {  
          pdfdiv.removeEventListener("click", onclick, true);  
          _gaq.push(['_trackEvent','....'])  
      }  
      pdfdiv.addEventListener("click", onclick, true);  
    });
    

    Den Code fügst du am Ende der Seite in einem <script>-Block ein, zwischen </body> und </html> (in jedem Falle aber nach dem Google-Analytics-Code). Deinem das PDF-Teil umklammernden <div> gibst du statt des onclick-Attributs mit dem id-Attribut einen entsprechenden Namen, im Beispiel oben "meinpdfdiv".

    1. Unsicher bin ich mir bei dem Scope der globalen JS-Variable. Greift die auch nur für den aktuellen Benutzer?

    Selbstverständlich. Javascript läuft im Browser, nicht auf dem Server.

    Und wie lange bleibt der Wert erhalten?

    Solange die Seite angezeigt wird.

    1. Wie kann ich aus einer JS-Funktion diesen GA-Tracking Event auslösen?

    Aufrufen, einfach aufrufen.

    1. Danke - läuft wie ne 1.