有没有办法以编程方式折叠在Google广告未显示时产生的空白区域?如果是这样,我很乐意看到相同的说明性例子。
四处搜索让我this official Google resource完成了我的要求。但是,这与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>
答案 0 :(得分:3)
我知道这很老了,但是由于我现在一直在处理。在jQuery中执行此操作的一种足够简单的方法是检查类adsbygoogle
中没有子元素的所有元素。
这将选择该类中的所有元素并将其隐藏,从而有效地折叠它们。
$(".adsbygoogle:empty").hide();
您也可以用它做很多其他的事情,例如如果它在div中并且您也需要隐藏它,请使用$(".adsbygoogle:empty").parent().hide()
将其进一步折叠。
我确信可以使用香草javascript轻松完成此操作。我建议在DOM加载后运行这一行代码,甚至要等10秒才能看到google是否填充了广告。
答案 1 :(得分:2)
我注意到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) {
}
});
答案 2 :(得分:2)
不过现在很简单了,插入这个CSS就行了;
<style>
ins[data-ad-status=unfilled] {display:none!important}
</style>
答案 3 :(得分:1)
此时引用DFP广告管理系统专业版的link provided重定向到documentation for Google Ad Manager,因此此功能可能在没有DFP专业版的情况下可用。
除此之外...
通常,根据我的经验,只要存在一个iframe
元素就足以知道广告是否放置在了您希望放置的位置。
setTimeout(function () {
if (!document.querySelector('#adcontainer').querySelectorAll('iframe').length > 0) {
document.querySelector('#adcontainer').remove();
}
},1000*2);
答案 4 :(得分:0)
我试图用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>
答案 5 :(得分:-2)
默认情况下,如果广告单元没有要在现场显示的广告资源,Adsense会折叠广告单元。但是,在某些情况下,Adsense会显示空白代替广告。
要解决此问题,您可以在创建或修改广告单元时提供后备广告网址。以下是: https://support.google.com/adsense/answer/113262?hl=en