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".
- 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.
- Wie kann ich aus einer JS-Funktion diesen GA-Tracking Event auslösen?
Aufrufen, einfach aufrufen.