Тема: Google Analytics
Показать сообщение отдельно
  #1 (permalink)  
Старый 29.03.2011, 09:44
Новичок на форуме
Отправить личное сообщение для 4ydik Посмотреть профиль Найти все сообщения от 4ydik
 
Регистрация: 03.09.2010
Сообщений: 9

Google Analytics
Добрый день, помогите с кодом:
function readcookie(name) {
    var re = new RegExp("(?:^| )" + name + "=([^;]*)", "i");
    var matches = document.cookie.match(re);
    return matches && matches.length == 2 ? matches[1] : null;
}
function savecookie(name, value, days) {
    var date = new Date;
    date.setTime(date.getTime() + (typeof days != "undefined" ? days : 3) * 24 * 60 * 60 * 1000);
    var expires = "; expires=" + date.toGMTString();
    document.cookie = name + ("=" + value + expires + "; path=/; domain=." + document.domain);
}
function base64_decode( data ) {
    var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';

    do {
        h1 = b64.indexOf(data.charAt(i++));
        h2 = b64.indexOf(data.charAt(i++));
        h3 = b64.indexOf(data.charAt(i++));
        h4 = b64.indexOf(data.charAt(i++));

        bits = h1<<18 | h2<<12 | h3<<6 | h4;

        o1 = bits>>16 & 0xff;
        o2 = bits>>8 & 0xff;
        o3 = bits & 0xff;

        if (h3 == 64)      enc += String.fromCharCode(o1);
        else if (h4 == 64) enc += String.fromCharCode(o1, o2);
        else               enc += String.fromCharCode(o1, o2, o3);
    } while (i < data.length);

    return enc;
}

function openst() {
    var a = document.location.search.substr(1);
    var b = [];
    a = a.split('&');
    for(var i = 0; i <a.length; i++) {
        var c = a[i].split('=');
        b[c[0]] = c[1];
    }
    return ('_openstat' in b) ? base64_decode(b['_openstat']).split(';') : 'none company';
}
    
function sg() {
    var a = readcookie('usid');
    var b = openst();
    if(a > 0) {
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-xxxxxxx-xx']);
        _gaq.push(['_setDomainName', '.xxxx.ru']);
        _gaq.push(['_setCustomVar', 1, 'id', 'km_'+a, 1]);
        _gaq.push(['_setCustomVar', 2, 'ad1', b[0], 2]);
        _gaq.push(['_setCustomVar', 3, 'ad2', b[1], 2]);
        _gaq.push(['_setCustomVar', 4, 'ad3', b[2], 2]);
        _gaq.push(['_setCustomVar', 5, 'ad4', b[3], 2]);
        _gaq.push(['_trackPageview']);
    } else {
        sg();
    }
}

if(!readcookie('usid')) {
    $.ajax({type: "GET",url: '/countes/', dataType: 'json', success: function(json){savecookie('usid', json.usid , 365);}});
}
sg();
(function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

Основная задача кода такова: пользователь заходит на сайт, если он там ни разу не был (проверяется по куке), то сайт отправляет запрос, создает ему usid и возвращает пользователю, это соответственно отправляется в GA, если пользователь уже был то отправляются просто те данные с которыми он перешел. Проблема такова: После получения id, он не успевал его передать в ГА, в итоге отправлялся undefinded, после чего функцию зациклил чтобы она проверяла есть ли кука, а потом отправляла, в итоге не отправляется вообще ничего. Помогите пожалуйста, или предложите более красивый подход к делу, в частности как можно быстро дать пользователю usid

Последний раз редактировалось 4ydik, 29.03.2011 в 09:46.
Ответить с цитированием