Клуб Рекламной сети Яндекса

Можно ли так джаваскриптом управлять показом/непоказом блоков на разных экранах?

Конкретно сейчас я хочу лишь не показывать блок на маленьких экранах. А в общем случае хотел бы показывать разные блоки в зависимости от размеров экрана устройства.

 

В CSS я использую медиазапросы, но просто скрывать блок (display:none) плохо, т.к. код блока по хорошему не должен вообще вызываться. Поэтому хочу использовать аналог медиазапросов на джаваскрипте и будет типа такого (добавил условие window.matchMedia):

--------------------------------------

<div class="reklama">

<!-- R-*****-1 Яндекс.RTB-блок  -->
<div id="yandex_ad_R-*****-1"></div>
<script type="text/javascript">

// условие вызова кода блока (только для экранов более 640 виртуальных точек шириной)

var m= window.matchMedia( "only screen and (max-device-width: 640px)" ) ;

if (! m.matches) {


    (function(w, d, n, s, t) {
        w[n] = w[n] || [];
        w[n].push(function() {
            Ya.Context.AdvManager.render({
                blockId: "R-*****-1",
                renderTo: "yandex_ad_R-*****-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>

</div>

-----------------------------

 

Подскажите, можно так делать?

3 комментария

Да, так можно сделать.

Спасибо

У меня на эту тему еще есть более общий вопрос:

Сейчас все более активно используется адаптивный дизайн. На разных экранах панели и колонки могут скрываться и открываться при определенных условиях.

 

Например, в правой колонке у нас блок РСЯ, человек открывает сайт на смартфоне в ландшафтном положении и ему правая колонка показывается. Но после поворота в портретный режим колонка, возможно, будет скрываться, чтобы освободить дефицитное место для основного содержимого, а в этой колонке возможно будут рекламные блоки.

 

Это плохо будет? Т.е. джаваскриптом можно сделать, чтобы в ландшафтном положении (когда колонка показывается) рекламный код загружался, а в портретном режиме (когда колонка скрывается) рекламный код не загружался. Но если посетитель откроет сайт в ландшафтном положении (при этом ему будет показана колонка с рекламой), а потом просто повернет экран в портретный режим, то колонка с рекламным блоком будет скрыта, а скрывать рекламные блоки нельзя. Как быть?

Не думаю, что в данном случае мы будем говорить о каком-либо нарушении. Но замечу, что ля мобильной версии обычно используются другие форматы, на которые такие изменения положения экрана не повлияют. Можно поставить одно объявление Директа в центральной колонке - это самый распространенный и логичный вариант.