Как сделать сплиттест для кодов JS

D
На сайте с 04.01.2012
Offline
91
296

Добрый вечер. Хочу сделать сплиттест для 2 партнерок, которые выдают js скрипт, который грузится на моей странице.

Подскажите, каким образом это сделать?

Подойдет ли для этого скрипт на JS, который позволяет рандомно выводить текст, вот такой к примеру:

<SCRIPT language="javascript">

<!--
/* Измените количество сообщений на то, которое у вас будет */
var howMany = 1
var quote = new Array(howMany+1)
quote[0]="Фраза 1."
quote[1]="Фраза 2."

function rndnumber(){
var randscript = -1
while (randscript < 0 || randscript > howMany || isNaN(randscript)){
randscript = parseInt(Math.random()*(howMany+1))
}
return randscript
}
quo = rndnumber()
quox = quote[quo]
document.write(quox)
//-->
</SCRIPT>
S
На сайте с 30.09.2016
Offline
469
#1

Ну попробуйте, что мешает? Должно работать. Хотя функция рандомизации какая-то замороченная, ИМХО.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
Korew
На сайте с 31.12.2007
Offline
187
#2

Давайте на примере кода РСЯ покажу решение (рабочее, сам так делаю). Есть код который дает нам РСЯ:


<!-- Yandex.RTB R-A-777777-1 -->
<div id="yandex_rtb_R-A-777777-1"></div>
<script type="text/javascript">
(function(w, d, n, s, t) {
w[n] = w[n] || [];
w[n].push(function() {
Ya.Context.AdvManager.render({
blockId: "R-A-777777-1",
renderTo: "yandex_rtb_R-A-777777-1",
async: true
});
});
t = d.getElementsByTagName("script")[0];
s = d.createElement("script");
s.type = "text/javascript";
s.src = "//an.yandex.ru/system/context.js";
s.async = true;
t.parentNode.insertBefore(s, t);
})(this, this.document, "yandexContextAsyncCallbacks");
</script>

Мы в html вставляем только:


<div id="yandex_rtb_R-A-777777-1"></div>

А вторую часть (но уже без тега <script>) вставляем в js файл:


(function(w, d, n, s, t) {
w[n] = w[n] || [];
w[n].push(function() {
Ya.Context.AdvManager.render({
blockId: "R-A-777777-1",
renderTo: "yandex_rtb_R-A-777777-1",
async: true
});
});
t = d.getElementsByTagName("script")[0];
s = d.createElement("script");
s.type = "text/javascript";
s.src = "//an.yandex.ru/system/context.js";
s.async = true;
t.parentNode.insertBefore(s, t);
})(this, this.document, "yandexContextAsyncCallbacks");

Это общий принцип как выводить код. Теперь для вашего конкретно случая (у вас есть 2 кода разных). Т.е. в одно место в html вставляем 2 дива:


<div id="yandex_rtb_R-A-777777-1"></div>
<div id="yandex_rtb_R-A-777777-2"></div>

Ну а в js уже в зависимости от условий выполняем один из двух кодов. Например:


var rnd = Math.round(Math.random());
if (rnd) {
// выполнить первый код
} else {
// выполнить второй код
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий