TagError:adsbygoogle.push()错误:当我使用自适应广告

时间:2018-06-13 00:34:04

标签: adsense

我为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%确定问题与代码本身有关

我的目标是将广告从桌面隐藏并在移动设备上展示

代码有什么问题?

2 个答案:

答案 0 :(得分:3)

Google AdSense中有(基本上)两种不同的响应式广告单元“尺寸调整”方法。

第一个是自动的,第二个是“手动”。

通常没有方法可以同时自动和手动,因为两者之间会有冲突,我认为如果删除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({}); 
            }
        });

});