Как программно свернуть пространство в пустом div, когда Google не показывает рекламу

Есть ли способ программно свернуть пустое пространство, которое появляется, когда объявление Google не показывается? Если это так, я хотел бы видеть наглядный пример того же.

Поиск вокруг привел меня к этому официальному ресурсу Google для выполнения именно того, что я просил. Однако это относится к Doubleclick for Publishers, который, к сожалению, является отдельным продуктом. Мне не терпится узнать, как справиться с этим для AdSense - некоторые из моих пользователей сейчас смотрят на пустые места.


В случае, если это важно, вот пример рекламного фрагмента, предоставленного Google AdSense (который я выровнял по центру):

    <div style="text-align:center">
        <ins class="adsbygoogle"
             style="display:block"
             data-ad-client="ca-pub-0000000000000000"
             data-ad-slot="0044031319"
             data-ad-format="auto"></ins>
        <script>
        (adsbygoogle = window.adsbygoogle || []).push({});
        </script>
    </div>

6 ответов

Но теперь это очень просто, просто вставьте этот CSS;

      <style>
ins[data-ad-status=unfilled] {display:none!important}
</style>

Я знаю, что это старое, но так как я занимаюсь этим сейчас. Достаточно простой способ сделать это в jQuery - проверить все элементы с помощью классаadsbygoogle у которых нет ребенка внутри.

Это выбирает все элементы с этим классом и скрывает их, эффективно сворачивая.

$(".adsbygoogle:empty").hide();

Вы также можете делать с ним много других вещей, например, если он находится в div, и вам тоже нужно скрыть это, используйте $(".adsbygoogle:empty").parent().hide() чтобы свернуть его дальше.

Я уверен, что это можно сделать и с помощью ванильного javascript. Я предлагаю запустить эту строку кода после загрузки DOM и даже подождать 10 секунд, чтобы посмотреть, заполняет ли Google рекламу.

Я заметил, что код AdSense передает событие MessageEvent, поэтому, когда я получаю resize-me тип событие, с 'r_nh': 0 пара ключ / значение, я скрываю контейнер AdSense (класс CSS adsense-ad) вручную.

Если у вас есть несколько контейнеров AdSense на одной странице, вы можете попытаться также проанализировать qid ключ из того же сообщения.

window.addEventListener("message", (event)=>{
    try {
        let message = JSON.parse(event.data);
        if (message.msg_type == 'resize-me') {
            let shouldCollapseAd = false;

            for (let index in message.key_value) {
                let key = message.key_value[index].key;
                let value = message.key_value[index].value;

                if (key == 'r_nh' && value == '0') {
                    shouldCollapseAd = true;
                }
            }

            if (shouldCollapseAd) {
                $('.adsense-ad').hide();
            }
        }
    } catch (e) {

    }
});

Предоставленная ссылка, которая ссылается на DFP Premium на данный момент, перенаправляет на документацию для Менеджера объявлений Google, поэтому возможно, что на данный момент эта функция доступна без DFP Premium.


Помимо этого...
Обычно существование iframe элемента, где вы ожидаете, достаточно знать, было ли объявление размещено там, где вы ожидали, или нет, по моему опыту.

setTimeout(function () {
    if (!document.querySelector('#adcontainer').querySelectorAll('iframe').length > 0) {
        document.querySelector('#adcontainer').remove();
    }
},1000*2);

По умолчанию Adsense сворачивает рекламный блок в случае, если у него нет инвентаря для отображения на месте. Однако в некоторых случаях Adsense показывает пустое место вместо рекламы.

Чтобы противостоять этому, вы можете предоставить запасной рекламный URL при создании или редактировании рекламного блока. Вот как это сделать: https://support.google.com/adsense/answer/113262?hl=en

Я попытался решить эту проблему с помощью CSS, так как Adsense внедряет различные iframe,ins и div с различными свойствами.

Этот код свернет пробел, но когда ваше объявление будет в тексте, оно переполнит часть текста, так что встраивание требует модификации:

<style>
    iframe { height: auto !important}
    ins { height: auto !important}
    #google_ads_frame1 { height: auto !important}
    .adsbygoogle, #aswift_0_expand, #aswift_0_anchor { height: auto!important} /* there might be more of those */
</style>
Другие вопросы по тегам