2015-11-01 212 views
13

我在我的網站上使用自適應Google廣告,但不幸的是它不是一直工作,大部分時間都是返回谷歌Adsense錯誤「TagError:adsbygoogle.push()錯誤:沒有可用寬度= 0的插槽大小」

TagError: adsbygoogle.push() error: No slot size for 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; 
    } 
} 

好了,這是真正的谷歌的Adsense谷歌代碼,我用(出於安全原因,我已經刪除酒吧-ID和廣告位。)

<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> 
+3

當我將Adsense代碼塊放入Angular ng-cloak中時,我得到了這個問題,在將代碼塊移出ng-cloak之後,問題消失了。如果您將adsense代碼放入某個動態生成的html中,請確保在執行google代碼之前DOM已準備好並可見。 – Adamy

回答

2

哪裏是你的父母容器?你應該設置父母的寬度和高度,而不是實際的<ins>標籤。

8

在我們的案例中,我們遇到了問題,但只在Chrome中顯示兩個橫幅。第一個橫幅不會顯示,它會產生錯誤:

No slot size for availableWidth=0

第二個橫幅會顯示OK。這個問題在Safari或Firefox中沒有發生。試圖通過CSS解決問題並沒有幫助。

我們通過改變解決了這個問題:

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

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

jQuery的需要上面的方法。

+0

我試過這個,它是說$沒有被定義... – ganders

+0

你需要在你的網站上啓用jQuery。如果已經嘗試了jQuery(document).ready(function(){(adsbygoogle = window.adsbygoogle || [])。push({})}) –

4

我使用setTimeout解決了這個問題,因爲問題在於GA代碼在其默認加載時沒有選擇父代的大小。

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

5

我用:

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

我的網站被裝載在一種特殊的方式頁面,大量使用AJAX的,所以它必須是這樣。希望這可以幫助某人。

0

如果有響應式主題和響應式AdSense單元,則會發生錯誤。所以,如果你定義CSS寬度和高度(不作爲%),這將解決(至少它解決了我的問題)

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

確保DOM推廣告時已準備就緒。

香草(僅現代瀏覽器)

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

在jQuery中

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

在角

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

2.請確保您有在頁面上的廣告數量是正確的。

  • 廣告的總數不超過谷歌的限制,這是每頁廣告。根據Google's new policy,添加到您網頁的廣告和其他付費宣傳材料不應超過您的內容。
  • 推廣到adsbygoogle的廣告數量相當於您在此頁上的 廣告數量。

3.對於響應單位,增加寬度和高度。

Responsive ad units需要在ins元素上指定的寬度和高度。你可以做這樣的事情:

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

最大3個廣告限制已被google解除。閱讀此:http://wpquads.com/google-adsense-allowed-number-ads/ –

+0

謝謝@ReneHermenau。已更新以反映Google的更改。 –

0

我:

在頭

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> 
<script> 
    (adsbygoogle = window.adsbygoogle || []).push({ 
    google_ad_client: "ca-pub-xxxxxxxxxx", 
    enable_page_level_ads: true 
    }); 
</script> 

在身體

<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> 
0

一個可能的原因是,您使用樣式創建的尺寸規格衝突的框架包含廣告單元格。在我的情況下,我使用的引導樣式弄亂了我的廣告顯示。

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

這沒有奏效。一旦我刪除它:

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

它工作得很好

4

您需要刪除不可見的人, 我如何使用(jQuery的):

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

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

我一直試圖找到解決錯誤的方法,並且我想感謝@Emerson Thompson的解決方案!

在我工作的一個環境中,我依賴Ad Inserter Pro for WordPress插件。事實證明,該插件打印所有佈局(移動和桌面)的HTML。以視口寬度作爲標準,然後隱藏一些使用CSS。

adsbygoogle.js找到隱藏的廣告時,它會拋出異常,阻止後續的JavaScript執行。

請務必在對它們進行初始化之前檢查您的廣告可見性。