如何在一页上使用多个 AdSense 单元?

Posted

技术标签:

【中文标题】如何在一页上使用多个 AdSense 单元?【英文标题】:How do you use multiple adsense units on one page? 【发布时间】:2014-09-25 13:59:19 【问题描述】:

如何在一个网站上拥有多个 AdSense 单元? Google 给出的唯一代码是单位代码。

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

如果我想在一个网站上使用多个 AdSense 单元怎么办?我只使用&lt;script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt;(adsbygoogle = window.adsbygoogle || []).push(); 一次,然后将&lt;ins ...&gt;&lt;/ins&gt; 代码放在我想要的位置。

问题是只有第一个 adsense 单元被解析和显示。您需要做什么才能显示多个 AdSense 单元?

这就是我使用它的方式(只显示第一个ins):

<!doctype html>
<html>
    <body>
        <ins class="adsbygoogle"
         style="display:inline-block;width:300px;height:250px"
         data-ad-client="ca-pub-123456"
         data-ad-slot="first"></ins>

         <ins class="adsbygoogle"
         style="display:inline-block;width:300px;height:250px"
         data-ad-client="ca-pub-123456"
         data-ad-slot="second"></ins>

         <ins class="adsbygoogle"
         style="display:inline-block;width:300px;height:250px"
         data-ad-client="ca-pub-123456"
         data-ad-slot="third"></ins>

        <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
        <script>(adsbygoogle = window.adsbygoogle || []).push();</script>
    </body>
</html>

【问题讨论】:

【参考方案1】:

要在一页上有多个 AdSense 单元,您必须添加更多行 (adsbygoogle = window.adsbygoogle || []).push();

因此,如果您有 3 个广告单元,您希望使用 3 次。

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

如果您想动态执行,请使用:

[].forEach.call(document.querySelectorAll('.adsbygoogle'), function()
    (adsbygoogle = window.adsbygoogle || []).push();
);

【讨论】:

我仍然每页只看到一个。 当我还包括 HTML sn-p 而不仅仅是 js 代码时,这对我有用! 如果我在一个页面中使用相同的“数据广告位”两次,显示的第二个广告是否会计为单独的展示?还是我需要使用不同的数据广告位从第二个展示的广告中获得收入? 每个广告单元都有一个唯一的data-ad-slot ID 对吧?我可以在同一个页面上为同一个广告单元(同一个data-ad-slot)放置广告吗?谢谢【参考方案2】:

使用 jQuery...

$(".adsbygoogle").each(function ()  (adsbygoogle = window.adsbygoogle || []).push(); );

【讨论】:

【参考方案3】:

只需在页面底部(&lt;/body&gt; 之前)调用一次&lt;script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"&gt;&lt;/script&gt;

接下来,像这样单独放置您的广告 sn-ps:

<!-- Top Banner Ad -->
<ins class="adsbygoogle"
    style="display:inline-block;width:320px;height:100px"
    data-ad-client="ca-pub-1234567890"
    data-ad-slot="4693644638"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push();
</script>

<!-- Responsive Ad -->
<ins class="adsbygoogle"
    style="display:block"
    data-ad-client="ca-pub-1234567890"
    data-ad-slot="3097818646"
    data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push();
</script>

【讨论】:

如果您将 @Danger:你为什么认为这会是个问题? 每个广告单元都有一个唯一的data-ad-slot ID 对吧?我可以在同一个页面上为同一个广告单元(同一个data-ad-slot)放置广告吗?谢谢【参考方案4】:

如果您想在一个页面上使用多个 AdSense 单元,则需要创建并粘贴多个 AdSense sn-ps:

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
     style="display:inline-block;width:300px;height:250px"
     data-ad-client="ca-pub-123456"
     data-ad-slot="first"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push();
</script>

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
     style="display:inline-block;width:300px;height:250px"
     data-ad-client="ca-pub-123456"
     data-ad-slot="second"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push();
</script>

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
     style="display:inline-block;width:300px;height:250px"
     data-ad-client="ca-pub-123456"
     data-ad-slot="third"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push();
</script>

在 AdSense 中只允许修改有限数量的代码。 https://support.google.com/adsense/answer/1354736?hl=en

我可能会回答为什么“只有第一个 adsense 单元被解析和显示”,我可以尝试向您展示如何修改您的示例以显示所有三个广告,但我认为这是不相关(在这种情况下),因为 AdSense 不允许这样做。 (而且可能完全没有必要。您可以简单地粘贴三个广告代码 sn-ps,或者 - 相同的 sn-p 三次。)

【讨论】:

见exisweb.net/…。多次包含 adsbygoogle.js 脚本是一种不好的做法。准时就够了。 @EmmanuelGleizer 只是好奇,那为什么 Google 的帮助文档不这么说呢? @Emmanuel Gleizer - AdSense 不是 ***(例如 - 如果您的 AdSense 帐户被禁用,您将无法“自行接受”您的申诉),它与编程无关,AdSense 是业务这在 AdSense 中不是“不好的做法”。你说得对:“一次就够了。”,没错。 @Justin Skiles - 是的,AdSense 文档是这么说的,这里是:support.google.com/adsense/answer/3221666?hl=en,这里是:googledevelopers.blogspot.com/2013/07/… 引用给定链接:“为了充分利用异步代码,我们建议您同时切换给定页面上的所有广告单元。”

以上是关于如何在一页上使用多个 AdSense 单元?的主要内容,如果未能解决你的问题,请参考以下文章

如何在一页上放置多个画布js动画。 (创建js)

如何在一页上运行多个版本的 Zepto.js? [关闭]

如何管理一页上的许多查询?

我应该如何只在一页上包含一个咖啡脚本文件?

如何在一页上添加两个谷歌图表?

是否可以在一页上有多个 Twitter Bootstrap 轮播?