我为Adsense设置了自适应广告
我收到错误:
未捕获的异常:TagError:adsbygoogle.push()错误:availableWidth = 0没有插槽大小
在每个包含此代码的网页上
<style type="text/css">
.adslot_2 { display:inline-block;width: 336px; height: 280px;}
@media (max-width: 336px) { .adslot_2 { width: 300px; height: 250px; } }
@media (min-width: 500px) { .adslot_2 { display: none; } }
</style>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle adslot_2" data-ad-client="removed for security purpose" data-ad-slot="removed for security purpose" data-ad-format="rectangle"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
我试图篡改代码但仍然得到相同的错误 请注意,我有其他具有不同代码的响应式广告单元未显示此错误,因此我100%确定问题与代码本身有关
我的目标是将广告从桌面隐藏并在移动设备上展示
代码有什么问题?
答案 0 :(得分:3)
Google AdSense中有(基本上)两种不同的响应式广告单元“尺寸调整”方法。
data-ad-format
。请参阅About responsive ad units页。@media
次查询。请参阅How to
modify your responsive ad code页面。(您会发现有”变体“,
这种方法的不同实现。)第一个是自动的,第二个是“手动”。
通常没有方法可以同时自动和手动,因为两者之间会有冲突,我认为如果删除data-ad-format="rectangle"
,您的代码应该可以正常工作。
如果适合您,请再次查看“我的广告”&gt;您的Google AdSense信息中心中的“广告单元”页面,并确保广告单元ID (data-ad-slot
)列为“响应” - 这两种方法都不应与固定大小一起使用广告单元。
答案 1 :(得分:1)
我有类似的问题。我注意到这是因为横幅根据屏幕的大小而变得不可见。一种解决方案是重命名“ adsbygoogle”类(我使用的是“ ADSENSE”),以确保在横幅广告一旦加载后,如果看不到adsense脚本,则在将其从DOM中删除之前,它们不会对横幅广告产生任何影响(因此发生“加载”事件):
window.addEventListener('load', () => {
let matches = document.querySelectorAll("ins.ADSENSE");
Array.from(matches).forEach((element) => {
let parentElement = element.parentElement;
if (window.getComputedStyle(parentElement).getPropertyValue("display") === "none") {
element.remove();
} else {
element.classList.remove("ADSENSE");
element.classList.add("adsbygoogle");
(adsbygoogle = window.adsbygoogle || []).push({});
}
});
});