Задать вопрос
@soofftt91

Как передать яндексу параметры визита (json) в выполняемом скрипте?

Всем доброго времени суток. В js опыт совсем не большой, на первый взгляд задача показалась пустяковой, но промчался весь день.

Делаю для клиента а/б тестирование по средством js. Генерирую случайное число, в зависимости от числа провожу манипуляции с элементом на странице, попутно записывая в куки чтобы при повторном посещении показать тот же вариант. Всё работает как часы.

Чтобы отследить результаты а/б теста нужно передать яндексу параметры визита, в этом и проблема.

Код который проверяет куки или сгенерированное число:
if (getCookie('ab_test')==null) {
if(rand == 1) {
var yaParams = {likes: "variant_1"};
setCookie('ab_test', '1', 1000*60*60*30);
} else if(rand == 2) {
var yaParams = {likes: "variant_2"};
setCookie('ab_test', '2', 1000*60*60*30);
setTimeout(likeUp, 5000);
}
} else if(getCookie('ab_test') == '1') {
var yaParams = {likes: "variant_1"};
} else if(getCookie('ab_test') == '2') {
var yaParams = {likes: "variant_2"};
setTimeout(likeUp, 5000);
}


var yaParams = {likes: "variant_1"}; - эта строка должна передать параметры визита.

Если вынести эту строку отдельно, то параметр передаётся, но в этом случае от него нету толка:
if(random >= '0.5') {var rand = 1;} else {var rand = 2;};
if (getCookie('ab_test')==null) {
if(rand == 1) {
setCookie('ab_test', '1', 1000*60*60*30);
} else if(rand == 2) {
setCookie('ab_test', '2', 1000*60*60*30);
setTimeout(likeUp, 5000);
}
} else if(getCookie('ab_test') == '1') {
} else if(getCookie('ab_test') == '2') {
setTimeout(likeUp, 5000);
}
var yaParams = {likes: "variant_1"};


Подскажите пожалуйста что я делаю не так.

UPD. На всякий случай прикладываю весь код:
function setCookie(c_name,value,exseconds){
var exdate=new Date();
exdate.setTime(exdate.getTime() + exseconds);
var c_value=escape(value);
document.cookie=c_name + "=" + c_value + ((exseconds==null) ? "" : "; expires="+exdate.toUTCString()) + "; path=/";
}

function getCookie(name) {
var matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : undefined;
}

function likeUp() {
//получаем кол-во шаров
var vkCount = $('.b-share-btn__vkontakte span.b-share-counter').html();
var fbCount = $('.b-share-btn__facebook span.b-share-counter').html();
var twCount = $('.b-share-btn__twitter span.b-share-counter').html();
var odnCount = $('.b-share-btn__odnoklassniki span.b-share-counter').html();
var moimirCount = $('.b-share-btn__moimir span.b-share-counter').html();
var gglCount = $('.b-share-btn__gplus span.b-share-counter').html();

if(moimirCount == '') {moimirCount = '1';} 
$('.b-share-btn__wrap a').addClass('b-share-btn__counter');

// переводим значение в числовое
vkCount = parseInt(vkCount);
fbCount = parseInt(fbCount);
twCount = parseInt(twCount);
odnCount = parseInt(odnCount);
moimirCount = parseInt(moimirCount);
gglCount = parseInt(gglCount);
var summa = vkCount+fbCount+twCount+moimirCount+moimirCount+gglCount;
summa = parseInt(summa);
summa = summa*2;

// увеличиваем значение
$('.b-share-btn__vkontakte span.b-share-counter').html(vkCount + 75 + summa);
$('.b-share-btn__facebook span.b-share-counter').html(fbCount + 137 + summa);
$('.b-share-btn__twitter span.b-share-counter').html(twCount + 28 + summa);
$('.b-share-btn__odnoklassniki span.b-share-counter').html(odnCount + 4);
$('.b-share-btn__moimir span.b-share-counter').html(moimirCount + 3);
$('.b-share-btn__gplus span.b-share-counter').html(gglCount + 35);
}

// аб тест
$(function() {
var random = Math.random();

if(random >= '0.5') {var rand = 1;} else {var rand = 2;};

if (getCookie('ab_test')==null) {
if(rand == 1) {
var yaParams = {likes: "variant_1"};
setCookie('ab_test', '1', 1000*60*60*30);
} else if(rand == 2) {
var yaParams = {likes: "variant_2"};
setCookie('ab_test', '2', 1000*60*60*30);
setTimeout(likeUp, 5000);
}
} else if(getCookie('ab_test') == '1') {
var yaParams = {likes: "variant_1"};
} else if(getCookie('ab_test') == '2') {
var yaParams = {likes: "variant_2"};
setTimeout(likeUp, 5000);
}
  • Вопрос задан
  • 2955 просмотров
Подписаться 2 Оценить 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы