piątek, 12 października 2012

Zdalna rejestracja zdarzeń na stronach www - część 2

Mamy już gotową obsługę naszego trackera, jaką należy wykonać na śledzonej stronie. Teraz zajmiemy się skryptami, jakie będą znajdowały się na naszym serwerze. Będą one odpowiedzialne za właściwą część związaną z rejestracją zdarzeń na zdalnym serwisie.

Na początek skrypt tracker.js
var bustersT = {
    _key : '',
    init : function(key) { 
        this._key = key;
    },
    _trackEvent : function(name, value) {
        var img = document.createElement('IMG');
        img.src = 'http://tracker.pl/'+value+'/'+name+'.png?'+(Math.random());
    },
    eOrder : function(options) {
        options.key = this._key;
        var opt64 = _base64(JSON.stringify(options));
        
        this._trackEvent('eOrder', opt64);
    }
}

var _phpbustersTtmp = [];

if((typeof window._phpbustersT) == 'object' && typeof window._phpbustersT.length != 'undefined' && window._phpbustersT.length > 0)
{
    _phpbustersTtmp = window._phpbustersT;
}

window._phpbustersT = {
    push : function(value)
    {
        if(value[0] == 'key')
        {
            bustersT.init(value[1]);
        }
        else
        {
            bustersT[value[0]](value[1]);
        }
    }
}

for(var i=0; i<_phpbustersTtmp.length; i++)
{
    window._phpbustersT.push(_phpbustersTtmp[i]);
}

W skrypcie wykorzystana jest metoda _base64. Takiej metody nie ma w javascript. Należy użyć zewnętrznej biblioteki do kodowania base64 lub napisać własną funkcję (to bardzo proste - postaram się opisać to w jednym z kolejnych postów).

Skrypt wykorzystuje kilka "sprytnych" możliwości JS.
Po pierwsze, można go załadować w dowolnym momencie, dzięki "symulacji" metody "push" obiektu Array.
Po drugie, skrypt dynamicznie tworzy nam element obrazka (tag img). Dzięki temu możemy przekazać dane do skryptu, który znajduje się w innej domenie niż śledzona strona (odwołanie AJAX zostało by zablokowane).
Po trzecie, dzięki temu, że skrypt również dynamicznie osadzamy w kodzie strony, nie będzie on powodował spowolnienia lub "zawieszenia" się śledzonego serwisu.

W kolejnym poście przedstawię skrypt php, który odbierze i zapisze dane z tracker.js.

Brak komentarzy:

Prześlij komentarz