这是their site的解释:



但是,javascript代码中使用的adsbygoogle数组是什么?

这是一个示例广告代码(请参见最后的javascript行):

<ins class="adsbygoogle"
 style="display:inline-block;width:300px;height:250px"
 data-ad-client="ca-pub-xxxxxxxxxxxxxxxx"
 data-ad-slot="yyyyyyyyyy"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

最佳答案

实际加载AdSense广告的脚本adsbygoogle.js是异步加载的(即通过标记)。调用adsbygoogle.push()是页面告诉脚本有一个广告位要填充的一种方式,它使用可以在异步加载的脚本执行之前或之后执行的代码。

如果adsbygoogle.js尚未加载,则adsbygoogle.push({})将adsbygoogle数组增加一个元素,这实际上增加了等待adsbygoogle.js注意的位置的广告位数量。加载adsbygoogle.js时,它将循环访问该队列,为每个队列条目处理一个广告位。

现在比较聪明:加载adsbygoogle.js后,它将替换成一个功能,使其立即处理新的广告位。这意味着adsbygoogle.js无需轮询DOM即可添加需要处理的新广告位。 (在现代浏览器上,您可以使用DOM Mutation Observer进行此操作,但是adsbygoogle早于此。)

这主要解释了为什么要对每个插槽执行push()。至于为什么要推送一个空对象,@ JustcallmeDrago的回答给出了一个很好的提示:您要推送的对象可以包含有关插槽的其他配置信息,但是空对象{}是一个很好的简短默认值,表示“使用DOM中其标记提供的配置数据填充第一个未填充的插槽。”

关于javascript - 将空对象插入Adsense代码中的adsbygoogle数组的目的是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23984182/

10-11 03:36