11

有没有办法以编程方式折叠谷歌广告未显示时产生的空白空间?如果是这样,我很想看到一个说明性的例子。

四处搜索使我找到了这个官方的谷歌资源,以完成我所要求的。但是,这与 DFP 广告管理系统有关,不幸的是,它是一个单独的产品。我很想知道如何为 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>
4

5 回答 5

5

我知道这是旧的,但因为我现在一直在处理这个问题。在 jQuery 中执行此操作的一个非常简单的方法是检查该类adsbygoogle中没有子元素的所有元素。

这会选择该类的所有元素并隐藏它们,从而有效地折叠它们。

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

你也可以用它做很多其他的事情,比如如果它在一个 div 中并且你也需要隐藏它,使用$(".adsbygoogle:empty").parent().hide()来进一步折叠它。

我确信这可以很容易地用 vanilla javascript 完成。我建议在 DOM 加载后运行这行代码,甚至等待 10 秒,看看 google 是否填充了广告。

于 2019-08-29T14:25:44.830 回答
3

但是现在很简单,插入这个CSS即可;

<style>
ins[data-ad-status=unfilled] {display:none!important}
</style>
于 2021-06-03T03:12:13.143 回答
3

我注意到 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) {

    }
});
于 2020-03-11T21:42:14.583 回答
1

此处提供的指向 DFP Premium的链接会重定向到Google Ad Manager 的文档,因此此时此功能可能在没有 DFP Premium 的情况下可用。


除此之外……根据我
的经验,通常存在iframe您期望的元素就足以知道广告是否放置在您期望放置的位置。

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

至于是否有一些有用的东西被加载到那个 iframe 中——这不是谷歌关心的事情,祝你好运,你会需要它的。

于 2019-01-10T19:28:51.673 回答
-1

我尝试使用 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>
于 2019-02-26T03:31:06.860 回答