Google Adsense错误" TagError:adsbygoogle.push()错误:availableWidth = 0"

时间:2015-11-01 17:44:06

标签: javascript css

我在我的网站上使用自适应Google广告,但遗憾的是它一直无法正常工作,大部分时间都在返回

  

TagError:adsbygoogle.push()错误:availableWidth = 0

没有插槽大小

我尝试通过定义广告尺寸来解决问题,但问题仍未得到解决。

.adslot_1 { width: 320px; height: 100px; }
@media (min-width:500px) { .adslot_1 { width: 468px; height: 60px; } }
@media (min-width:800px) { .adslot_1 { width: 728px; height: 90px; } }
@media only screen and (min-width:800px)and (max-width:3000px) {
    #topbanner {
        width: 640px;
        height: 90px;
    }
}

嗯,这是我使用的实际Google Adsense Google代码(出于安全考虑,我已删除了pub-id和ad-slot。)

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- articles(auto) -->
<ins class="adsbygoogle adslot_1"
     style="display:inline-block;"
     data-ad-client="ca-pub-[MY_AD_ID]"
     data-ad-slot="AD_SLOT_NOS"
     data-ad-format="rectangle, horizontal"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

15 个答案:

答案 0 :(得分:15)

我用过:

window.onload = function() {
    (adsbygoogle = window.adsbygoogle || []).push({});
}

我的网站以特殊方式加载页面,大量使用AJAX,因此必须采用这种方式。希望这有助于某人。

EDIT 2018:我觉得我现在应该提一下,首选的方法是window.addEventListener( 'load', ... ),而不是window.onload = ...的旧方法

答案 1 :(得分:12)

在我们的案例中,我们在显示两个横幅但仅在Chrome中有问题。第一个横幅不会显示,它会产生错误:

  

availableWidth = 0

没有插槽大小

第二个横幅将显示OK。问题不是在Safari或Firefox中发生的。试图通过CSS解决问题没有帮助。

我们通过改变:

解决了这个问题
(adsbygoogle = window.adsbygoogle || []).push({})

$(document).ready(function(){(adsbygoogle = window.adsbygoogle || []).push({})})

上述方法需要jQuery。

答案 2 :(得分:9)

您需要删除其他不可见的内容, 我如何使用(jQuery):

$(document).ready(function(){
  var $analyticsOff = $('.adsbygoogle:hidden');
  var $analyticsOn = $('.adsbygoogle:visible');

  $analyticsOff.each(function() {
    $(this).remove();
  });
  $analyticsOn.each(function() {
    (adsbygoogle = window.adsbygoogle || []).push({});
  });
});

答案 3 :(得分:6)

我使用setTimeout解决了它,因为问题是GA代码没有在默认加载时选择父级的大小。

setTimeout(function(){(adsbygoogle = window.adsbygoogle || []).push({})}, 1000);

答案 4 :(得分:6)

1。在推送广告时确保DOM已准备就绪。

Vanilla(仅限现代浏览器)

document.addEventListener("DOMContentLoaded", function() {
    (adsbygoogle = window.adsbygoogle || []).push({});
});

在jQuery中

$(document).ready(function(){
    (adsbygoogle = window.adsbygoogle || []).push({});
});

在Angular中

$timeout(function () {
    (adsbygoogle = window.adsbygoogle || []).push({});
});

2。确保页面上的广告数量正确无误。

  • 广告总数不超过Google的限制,即 3 每页广告。根据{{​​3}}。
  • ,添加到您网页的广告和其他付费宣传材料不得超出您的内容
  • 推送到adsbygoogle的广告数量与广告数量相对应 你在页面上的广告。

3. 对于自适应单位,请添加宽度和高度。

Google's new policy需要在ins元素上指定的宽度和高度。你可以这样做:

ins {
    min-width: 300px;
    min-height: 50px;
}

答案 5 :(得分:2)

您的父容器在哪里?您应该在我认为的父级上设置宽度和高度,而不是实际的<ins>标记。

答案 6 :(得分:1)

我有:

头脑中

<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-xxxxxxxxxxxx"
     data-ad-slot="xxxxxxxxxxxx"
     data-ad-format="link"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>   

在体内

<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>   

=============================================== =======

我提供解决方案,只需删除最后一个

var x = new Array();
var y = new Array(1, 1, 0, 3, 5);
for(let i = 0; i < y.length; i++){
    let key = y[i];
    x[ key ] = y[i];
}

答案 7 :(得分:1)

一个可能的原因是您使用在大小规范中产生冲突的框架来设置包含广告单元的div的样式。在我的情况下,我使用的是自举样式,这使我的广告显示混乱。

<div id="ad1" class="row">
<!-- ad code-->
</div>

这不起作用。一旦我删除它:

<div id="ad1">
<!--ad code-->
</div>

它工作正常

答案 8 :(得分:1)

我一整天都试图找到错误的解决方案,我要感谢@Emerson Thompson的解决方案!

在我正在使用的一个环境中,我依靠 Ad Inserter Pro for WordPress 插件。事实证明,该插件为所有布局(移动和桌面)打印HTML。以视口宽度为标准,然后使用CSS隐藏一些。

adsbygoogle.js找到隐藏广告时,会抛出阻止后续javascript执行的TagError: adsbygoogle.push() error: No slot size for availableWidth=0异常。

请务必先检查广告的展示率,然后再进行初始化。

答案 9 :(得分:1)

只需添加style="display:inline-block;width:100%;" 这对我来说是工作。

答案 10 :(得分:0)

如果有响应主题和响应式adsense单元,则会出现错误。所以,如果你在CSS中定义宽度和高度(而不是%),这将解决(至少它解决了我的问题)

#sidebar {
width: width of your ad px;
height: height of your px;
}

答案 11 :(得分:0)

如果您使用的是angular-google-adsense,则需要从adsense html块中删除ad-format标签;

错误:

<adsense 
ad-client="ca-pub-2427218021515520" 
ad-slot="5093178896" 
inline-style="display:inline-block;width:100%;" 
ad-format="auto">

右:

<adsense 
ad-client="ca-pub-2427218021515520" 
ad-slot="5093178896" 
inline-style="display:inline-block;width:100%;">

答案 12 :(得分:0)

我发现修改ins标记以删除data-ad-format属性为我解决了该错误:

<ins class="adsbygoogle adslot_1"
 style="display:inline-block;"
 data-ad-client="ca-pub-[MY_AD_ID]"
 data-ad-slot="AD_SLOT_NOS"></ins>

答案 13 :(得分:0)

我遇到了同样的问题,因为主页上没有侧边栏,并且只出现了错误,我通过在侧边栏中的adsense元素上添加此错误来更正了

  

cond ='data:blog.pageType ==“ item”'

答案 14 :(得分:0)

我遇到了同样的问题并通过删除这些来修复它。

display: flex;
flex-direction: column;