在ng-repeat循环中包含Adsense广告会导致错误

时间:2013-12-04 00:39:51

标签: angularjs adsense

我在Angularjs ng-repeat循环中的某些位置包含Google Adsense广告,如下所示:

<div ng-repeat="item in items"  >

 <div data-my-ad-sense ng-if="$index == 3">
  //inject an ad inside the third item


   <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
   <!-- ad 2 -->
     <ins class="adsbygoogle"
     style="display:inline-block;width:290px;height:290px"
     data-ad-client="ca-pub-000000"
     data-ad-slot="00000"></ins>
   <script>
   (adsbygoogle = window.adsbygoogle || []).push({});
   </script>


</div>
</div>

它工作正常,但它给了我错误:

Uncaught Error: adsbygoogle.push(): All ins elements in the DOM with class=adsbygoogle already have ads in them

广告出现在他们应该去的地方,但我有点担心谷歌会认为我使用的广告比我应该的多。我已尝试将它们加载到局部,但这也不起作用。

有谁知道如何摆脱这个错误?

2 个答案:

答案 0 :(得分:1)

使用以下指令

var adSenseTpl = '<ins class="ad-div adsbygoogle responsive" style="display:inline-block;width:468px;height:60px" data-ad-client="ca-pub-xxxxx" data-ad-slot="xxxxx"></ins></ins>';
    angular.module('reviewmattersApp')
        .directive('googleAdsense', function($window, $compile) {
        return {
            restrict: 'A',
            transclude: true,
            template: adSenseTpl,
            replace: false,
            link: function postLink(scope, element, iAttrs) {
                    element.html("");
                    element.append(angular.element($compile(adSenseTpl)(scope)));
                    if (!$window.adsbygoogle) {
                        $window.adsbygoogle = [];
                    }
                    $window.adsbygoogle.push({});
            }
        };
    });

在html方面

<div  google-adsense>
</div>

答案 1 :(得分:0)

请注意,Google最多允许三个内容单元,每页最多三个链接单元和两个搜索框。

我遇到同样的错误,页面上只有三个添加。为防止显示错误,您可以在Google添加代码中替换此行

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

更改为

try{
  (adsbygoogle = window.adsbygoogle || []).push({});
}catch(ex){}