Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌AdSense在AngularJS部分-为什么改变视图显示错误大小的广告?_Javascript_Angularjs_Iframe_Asynchronous_Adsense - Fatal编程技术网

Javascript 谷歌AdSense在AngularJS部分-为什么改变视图显示错误大小的广告?

Javascript 谷歌AdSense在AngularJS部分-为什么改变视图显示错误大小的广告?,javascript,angularjs,iframe,asynchronous,adsense,Javascript,Angularjs,Iframe,Asynchronous,Adsense,我有一个AngularJS应用程序在生产中通过谷歌AdSense的批准。此应用程序通过单击几个不同的链接,使用部分模板更新ng视图元素。我使用两种不同的广告尺寸,一种是盒子,另一种是排行榜 在初始页面加载时,广告似乎会正确显示,但在更改视图时,会发生以下情况: Adsense正在将一个方形广告加载到iframe大小/形状的排行榜中,结果是广告内容出现了令人讨厌的“剪辑”。这种效果也发生在相反的情况下,排行榜广告加载到具有类似剪辑效果的方形iFrame中 我使用的是标准的ng指令方法,互联网似

我有一个AngularJS应用程序在生产中通过谷歌AdSense的批准。此应用程序通过单击几个不同的链接,使用部分模板更新
ng视图
元素。我使用两种不同的广告尺寸,一种是盒子,另一种是排行榜

在初始页面加载时,广告似乎会正确显示,但在更改视图时,会发生以下情况:

Adsense正在将一个方形广告加载到iframe大小/形状的排行榜中,结果是广告内容出现了令人讨厌的“剪辑”。这种效果也发生在相反的情况下,排行榜广告加载到具有类似剪辑效果的方形iFrame中

我使用的是标准的
ng指令
方法,互联网似乎认为用谷歌adsense内容填充div是一种规范。请在此处找到javascript:

app.directive('myAdSense', function() {
    return {
        restrict: 'A',
        transclude: true,
        replace: true,
        template: '<div ng-transclude></div>',
        link: function ($scope, element, attrs) {}
    }
});
app.directive('myAdSense',function(){
返回{
限制:“A”,
是的,
替换:正确,
模板:“”,
链接:函数($scope,element,attrs){}
}
});
下面是模板部分中的一个html示例:

<div data-my-ad-sense>
    <!-- Display Partial Leaderboard -->
    <ins class="adsbygoogle"
        style="display:inline-block;width:728px;height:90px;float:right;"
        data-ad-client="ca-pub-11111111111"
        data-ad-slot="11111111"></ins>
    <script>
        try{
          (adsbygoogle = window.adsbygoogle || []).push({});
        }catch(ex){}
    </script>
</div>

试一试{
(adsbygoogle=window.adsbygoogle | |[]).push({});
}捕获(ex){}
当直接访问任何特定视图(通过路由)时,广告看起来都很好,但在点击应用程序后,这种不正确的广告大小几乎100%都会出现。我搜索了谷歌、adsense帮助论坛和adsense常见问题解答,但没有找到原因或解决方案

为什么改变视图会以错误的大小显示广告?我怎样才能阻止这种上浆现象?
提前感谢-很抱歉,从您的描述中看到了文字墙,它看起来非常像在包含的视图的构建顺序中存在一些不一致。考虑到你的陈述,这似乎更可能发生,即几乎每次你在应用程序中更改路由时都会发生错误

我对AdSense SDK的内部工作不是很有经验,但我会尝试执行
try。。catch
语句(或设置广告容器所需的任何初始调用),因为AngularJS中的链接函数调用只有在编译完所有内容并添加到DOM后才能可靠地进行。 我的指令中通常都有脚本逻辑,特别是在我们讨论
ng视图时

除此之外,我还将进一步研究异步初始化单个ad容器()的可能性


对你来说,这听起来有点像在泥水里钓鱼,但无论如何我都会这么做

你能创建一个plunker吗?试图创建一个plunker,但无法让我的广告出现在我的域之外,正在寻找“沙盒”或测试发布者id,用于异步示例来为你创建并运行它。我遇到了类似的情况:我在一个视图中有4个广告。我改变看法。当我回来的时候,我的广告不见了(或者只有1-2-3个……随机)。感谢你的回复,尝试添加
(adsbygoogle=window.adsbygoogle | |[])。push({})行到链接函数,但没有成功。随着adsense api的进一步发展,我会让你继续深造——我可能会花8个小时寻找替代解决方案和研究,但运气不佳,它的优先级降低了,但一旦我清除了待办事项列表,我将再做一次尝试。我仍在寻找解决方案@Joe…news?不幸的是,我一直很忙,这个问题对我的重要性降低了。。。我已经调查过了,但没有进一步的成功