tiny-track.js [3834b] - tiny-track-min.js.gz [1170b]
tiny-track-extra.js [991b] - tiny-track-extra-min.js.gz [441b]
Die t.track-Funktion benötigt tiny.js, falls slicing verwendet werden soll, zudem noch tiny-cookie; die optionale Browser-Erkennung* des client-Parameters erfordert zudem tiny-browser und die optionale Flash-Erkennung* tiny-swf. Auch ohne die zusätzlichen Scripte, von tiny.js abgesehen, funktioniert tiny-track, ist jedoch in seinem Funktionsumfang eingeschränkt. Andere Scripte sind nicht erforderlich.
Das Tracking wird beim Laden der Seite mit den entsprechenden Optionen über die Methode t.track.init(opts) initialisiert. Die Optionen sind dabei als Objekt gekapselt (es kann auch ein Array von Optionen übergeben werden):
| url | URL zum Tracking-Pixel-Versand (erforderlich) |
|---|---|
| type | Event-Typ, welcher getrackt werden soll (erforderlich) |
| slice | Objekt mit einem Cookie-Defaults-Objekt sowie der Chance, die gesliced werden soll (optional): |
| slice.cookie | Cookie-Objekt, welches mit einem Value befüllt wird. |
| slice.chance | Chance als Prozentzahl (0-100), in das Tracking hineinzukommen. |
Zusätzlich kann man die folgenden Eigenschaften des Trackings jederzeit einstellen bzw. auslesen:
| t.track.movetimeout | Intervall in Millisekunden. Wenn die Maus so lange nicht bewegt wird, wird das mousemove-Event getrackt. Default sind 5 Sekunden. |
|---|---|
| t.track.textlength* | Die Länge des Textes, welcher mit dem Parameter "text" übertragen wird, normalerweise 20 Zeichen |
| t.track.ts1 | Der Timestamp der ersten Initialisierung (nach Möglichkeit sollte dieser nicht überschrieben werden) |
| t.track.urls | Ein Speicher für die Tracking-Einstellungen. Daran sollte man nur manipulieren, wenn man genau weiß, was man tut. |
| t.track.par | Ein erweiterbares Objekt voller Funktionen, die Wert-Rückgaben aufgrund der jeweiligen Events machen |
Grundsätzlich kann man jedes normale DOM-Event verwenden, einschließlich weniger gebräuchlicher Events wie window.onorientationchange beim iPhone. Darüber hinaus hat tiny-track noch folgende Besonderheiten:
"init" ist kein normales Event, sondern wird direkt beim Initialisieren aufgerufen; es kann durchaus sein, dass manche Informationen zu dieser Zeit nicht verfügbar sind.
document.ready wird aufgerufen, sobald das DOM fertig ist, d.h. der Ladevorgang an HTML, CSS und JS ist abgeschlossen, lediglich Bilder und iframes können noch nachfolgen.
Diese Events unterteilen das normale click-Event in solche Clicks, welche die Seite verlassen und solche, die es nicht tun. Diese click-Events werden bei Mausklick ausgelöst. Nur hier und bei mousemove gibt pos vernünftige Werte zurück.
Wenn der Mauszeiger für mehr als standardmäßig 5 Sekunden (siehe movetimeout) an einer Stelle verharrt, wird dieses Event ausgelöst.
In allen Browsern außer dem MSIE wird, wenn man ein Formular durch Druck auf Enter innerhalb eines Felds (außer Textarea) abschickt, der erste button/input-submit-node gesucht und dort ein click-Event generiert. Um auch im IE Formular-Absendungen messen zu können, wird hier implizit (ohne Zutun des Nutzers) das keydown-Event mißbraucht.
In manchen Fällen möchte man Ereignisse tracken, die nicht direkt mit einem Event verbunden sind. In diesem Fall kann man die Funktion t.track([simuliertes Event]) mit einem simulierten Event aufrufen. In jedem Fall gesetzt sein sollten target (ggf. document), ts (new Date()*1) und type (beliebig, es muss jedoch eine URL mit diesem Typ eingetragen sein).
Die folgenden Informationen können standardmäßig getrackt werden:
| type | Event-Typ (ready, click, keydown) |
|---|---|
| url | Gegenwärtige Seiten-URL |
| title | Seiten-Titel |
| referrer | Referrer |
| duration | Ladezeit in Millisekunden, bspw. "1413" |
| screen | Bildschirm-Auflösung, z.B. "1280x800" |
| window | Fenster-Größe, etwa "1150x600" |
| client* | Browser-Information, bspw. "firefox-3.6.2", benötigt tiny-browser.js |
| os* | System-Information, bspw. "windows nt5.1", benötigt tiny-browser.js |
| flash* | Flash-Version (mit Revisionsnummer), bspw. "10.2" |
| ts | Timestamp in ms (Unix-Zeit) |
| element* | Event-Target-Name und ID/Klasse, etwa "div#test" |
| pos | Maus-Position, bspw. "513x411" |
| link | Link-href, auch von Parent |
| action | Formular-Action, falls ein solches ausgelöst wird |
Man kann diese Tracking-Parameter leicht ergänzen oder überschreiben, indem man auf t.track.par.[name] zugreift, als Werte kann jeder String oder jede Funktion verwendet werden. Leerstrings und alles, was zu false konvertiert, werden samt der dazugehörigen GET-Parameterschlüssel herausgefiltert.
t.track.par.content = function(e) {
var T=e.target, c;
while (!c&&(c=(T.innerHTML||T.value).replace(/<[^>]*>/g,''))&&(T=T.parentNode));
return escape(c.substr(0,29));
};
t.track.par.cpos=function(e){return ((e.mouseX||0)>>3)+'x'+((e.mouseY||0)>>3)};
var slice={cookie: { name: 'dice', date: 63072000000, path: '/', domain: '.'+location.hostname }, chance: 10};
t.track.init([
{ url: '/cgi-bin/tracking.rb?url=${url}&t=${duration}&ua=${client}&ts=${ts}&s=${screen}&w=${window}&fv=${flash}&ev=${type}', type: 'ready', slice: slice },
{ url: '/cgi-bin/tracking.rb?url=${url}&t=${duration}&pos=${cpos}&lnk=${action}&lnk=${link}&ts=${ts}&ev=${type}', type: 'click', slice: slice }
]);
© 2010 Alex Kloss