JS ротатор ракламы

12
D
На сайте с 28.06.2008
Offline
1101
1011

Нужно при разрешении экрана менее 1024 показывать директ, а более - адсент, не боделитесь кодом JS - как это можно реализовать?

[umka]
На сайте с 25.05.2008
Offline
456
#1

Зрадоздью.

Даже без JS.

<style>

@media screen (max-width: 1024px) {
.adsense { display: none; }
}
@media screen (min-width: 1025px) {
.direct { display: none; }
}
</style>

...

<div class="direct">

Тут код директа
</div>
<div class="adsense">
Тут код адсенса
</div>
Лог в помощь!
D
На сайте с 28.06.2008
Offline
1101
#2
'[umka:
;15494840']Зрадоздью.
Даже без JS.

При использовании display: none; будет ли загрузка не используемых скриптов? Я переживаю что display: none; просто скрывает рекламы, а она все равно будет загружаться, что будет тормозить страницу

Samail
На сайте с 10.05.2007
Offline
361
#3

Может так лучше?

<script> 

if (screen.width >= 1024)
document.write('Адсенс');
else
document.write('Директ');
</script>

Т.к. Гугл разрешает скрывать не все блоки https://support.google.com/adsense/answer/1354736?hl=ru

А Яндекс вообще не понять что хочет: https://yandex.ru/blog/partner/16178

Определение разрешения экрана происходит на серверной стороне до загрузки javascript, соответственно, код просто не должен вызываться.

Правда там не уточняется каким образом сервер разрешение определит, возможно стоит уточнить у техподдержки РСЯ что имелось ввиду.

D
На сайте с 28.06.2008
Offline
1101
#4

Сработало вот так

<style>

@media only screen and (max-width: 1024px) {

.adsense { display: none; }

}

@media only screen and (min-width: 1025px) {

.direct { display: none; }

}

</style>

без only не работало

---------- Добавлено 25.02.2018 в 10:10 ----------

Samail, ваш вариент почему-то не работает....

D
На сайте с 28.06.2008
Offline
1101
#5

Так не работает, не подскажите почему? (код вызова основного скрипта гугла стоит выше, поэтому его не прописывал)

<script>

if (screen.width >= 1024)

document.write('<ins class="adsbygoogle"

style="display:block"

data-ad-client="ca-pub-59195138"

data-ad-slot="5444444"

data-ad-format="auto"></ins>

<script>

(adsbygoogle = window.adsbygoogle || []).push({});

</script>');

else

document.write('<div id="yandex_rtb_R-A-60004-8"></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-60004-8",

renderTo: "yandex_rtb_R-A-60004-8",

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>');

</script>

tommy-gung
На сайте с 22.11.2006
Offline
287
#6
Dram:
без only не работало

да там и screen не нужен. достаточно только размер указать, т.е. @media (max-width: 1024px) {}

Здесь не могла быть ваша реклама
Samail
На сайте с 10.05.2007
Offline
361
#7
Dram:
Так не работает, не подскажите почему?
Dram:
</script>');

Потому что когда браузер видит внутри document.write закрывающий тег script, он "думает" что это конец скрипта. Так нужно писать:

</scr' + 'ipt>'
D
На сайте с 28.06.2008
Offline
1101
#8

Так тоже не работает!

<script>

if (screen.width >= 1024)

document.write('<ins class="adsbygoogle"

style="display:block"

data-ad-client="ca-pub-59195138"

data-ad-slot="5444444"

data-ad-format="auto"></ins>

<script>

(adsbygoogle = window.adsbygoogle || []).push({});

</scr' + 'ipt>');

else

document.write('<div id="yandex_rtb_R-A-60004-8"></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-60004-8",

renderTo: "yandex_rtb_R-A-60004-8",

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");

</scr' + 'ipt>');

</script>

Samail
На сайте с 10.05.2007
Offline
361
#9

А так?

<script>

if (screen.width >= 1024)
document.write('<ins class="adsbygoogle"\
style="display:block"\
data-ad-client="ca-pub-59195138"\
data-ad-slot="5444444"\
data-ad-format="auto"></ins>\
<script>\
(adsbygoogle = window.adsbygoogle || []).push({});\
</scr' + 'ipt>');
else
document.write('<div id="yandex_rtb_R-A-60004-8"></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-60004-8",\
renderTo: "yandex_rtb_R-A-60004-8",\
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");\
</scr' + 'ipt>');
</script>
D
На сайте с 28.06.2008
Offline
1101
#10

Samail, спасибо! так заработало!

12

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