TagError: adsbygoogle.push() error: No slot size for availableWidth=0 when i use responsive ads

TagError: adsbygoogle.push() error: No slot size for availableWidth=0 when i use responsive ads

我为 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% 确定问题出在代码本身

我的objective是从桌面隐藏广告并在移动设备上显示

代码有什么问题?

Google AdSense 中(基本上)有两种不同的响应式广告单元方法 "sizing"。

第一个是自动的,第二个是"manual"。

通常没有方法可以同时是自动的和手动的,因为两者之间会有冲突,我认为如果你去掉data-ad-format="rectangle".

你的代码应该可以正常工作

如果这对您有用,请再次检查 "My ads" > "Ad units" 页面在您的 Google AdSense 控制面板中,并确保此 广告单元 ID (data-ad-slot) 被列为 "Responsive" - none 两种方法中的一种应与固定尺寸的广告单元一起使用。

我遇到了类似的问题。我注意到这是因为横幅根据屏幕尺寸变得不可见。一个解决方案是重命名 "adsbygoogle" class(我选择了 'ADSENSE')以确保在我将它们从 DOM 如果样式表加载后它们不可见(因此 'load' 事件):

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({}); 
            }
        });

});