Google Ana­lytics ist ein sehr schö­nes Tool, um das Nut­zungs­ver­hal­ten einer Web­site zu tra­cken. Lei­der bie­tet Google keine Mög­lich­keit, dass die Besu­cher diesm Tracking widersprechen.

Marco Hass­ler hat eine Mög­lich­keit beschrie­ben, ein OptOut im Eigen­bau zu machen. Das Ganze hab ich für mei­nen Blog mit Hilfe von jQuery nachgebaut.

Falls kein OptOut Coo­kie gesetzt ist wird mit Hilfe des Geeko­logy jQuery Plugins Google Ana­lytics gela­den. Anschlies­send wer­den die exter­nen Links wie bei CSS–Tricks beschrie­ben zum Tracking hinzugefügt.

Das Coo­kie wird bei jedem Auf­ruf der Seite mit einer Gül­tig­keit von einem Jahr neu gesetzt, so dass das OptOut dau­er­haft vor­han­den ist. Die­ser OptOut Coo­kie muss aber von dem Besu­cher akzep­tiert werden.

Der jQuery Code hierfür:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
$(document).ready(function(){
    // Google Analytics
    var trackSite = ($.cookie("ga_optout") != "donttrack");
 
    if (trackSite) {
        // Enter Tracking Code here
        $.geekGaTrackPage('UA-0000000-0');
        $(".external").each(function() {
            $(this).bind('click keypress', function(event) {
                var code=event.charCode || event.keyCode;
                if(!code || (code && code == 13)) {
                    var fixedLink = $(this).attr('href');
                    fixedLink = fixedLink.replace(/https?:\/\/(.*)/,"$1");
                    fixedLink = '/outgoing/' + fixedLink;
                    $.geekGaTrackEvent('page', 'click', fixedLink, '');
                }
            });
        });
        $('#optout').attr('checked','checked');
        $.cookie("ga_optout", "track", { path: '/', expires: 365 });
    } else {
        $('#optout').attr('checked','');
        $.cookie("ga_optout", "donttrack", { path: '/', expires: 365 });
    }
 
    // Set OptOut Cookie
    $('#optout').change(function() {
        if ($(this).attr('checked')) {
            $.cookie("ga_optout", "track", { path: '/', expires: 365 });
        } else {
            $.cookie("ga_optout", "donttrack", { path: '/', expires: 365 });
        }
    });
});

Um das OptOut ein­zu­bin­den, muss eine Check­box mit der ID »optout« dort ein­ge­bun­den wer­den, wo die OptOut Mög­lich­keit gege­ben wer­den soll:

1
2
<input id="optout" type="checkbox" value="track" />
<label for="optout">Daten mit Google Ana­lytics aufzeichnen</label>