我在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
广告出现在他们应该去的地方,但我有点担心谷歌会认为我使用的广告比我应该的多。我已尝试将它们加载到局部,但这也不起作用。
有谁知道如何摆脱这个错误?
答案 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){}