【问题标题】:Why is this Javascript code for inserting an Adsense ad not working?为什么这个用于插入 Adsense 广告的 Javascript 代码不起作用?
【发布时间】:2012-06-30 06:29:27
【问题描述】:

advice from this question开始,我做了一些搜索,在this web site上找到了一些代码,旨在将Google Adsense广告插入我网页上的特定位置,在页面之后已加载。就我而言,我在 Javascript 中进行了一些检查,将 JSON 数据发送回我的服务器,然后根据从该 JSON 获得的响应,我决定是否展示 Google Adsense 广告。

由于我是从网上得到这段代码,并不是我自己写的,有很多我没有得到,在某些地方我不得不根据我认为需要的内容填写详细信息,但是我猜测了一下。这是我当前使用的代码的外观:

if(userStatus.status == 0)
{
    console.log("google ad should show");

    window["google_ad_client"] = 'ca-pub-0000000000000000';
    window["google_ad_slot"]  = "0000000000";
    window["google_ad_width"]  = 320;
    window["google_ad_height"]  = 50;

    window.adcontainer = document.getElementById('google-ad');
    window.adhtml = '';

    function mywrite(html)
    {
        adhtml += html;
        if(html == '</iframe>')
        {
            adcontainer.innerHTML = adhtml;
        }
    };

    document.write_ = document.write;
    document.write = mywrite;

    script = document.createElement('script');
    script.src='http://pagead2.googlesyndication.com/pagead/show_ads.js';
    script.type='text/javascript';
    document.body.appendChild(script);
}

看来差不多可以用了。

当我在启用了 Firebug 的 Firefox 中查看我的页面时,我看到我的控制台日志消息正在显示,所以我知道我已经通过了所有条件。

我还尝试使用直接写入 HTML 的代码来运行广告,以确认 Google 已接受我的网站并且他们将展示广告。当我这样做时,广告会正常显示,所以我相信我的 Asense 帐户没有问题。

但是,虽然对http://pagead2.googlesyndication.com/pagead/show_ads.js 的调用被附加到页面末尾,但广告参数似乎并未按预期写入google-ad DIV。

因此,广告没有显示。

我的代码哪里出错了?

【问题讨论】:

    标签: javascript adsense


    【解决方案1】:

    原来问题出在if(html == '&lt;/iframe&gt;') 行。我原以为这与 Google 如何构建 adsense 广告有关,但它一定与最初编写代码的人需要如何构建他们的 HTML 有关。

    不过,就我而言,我根本不需要它。我的代码现在已更改为:

    function mywrite(html)
    {
        adhtml += html;
        adcontainer.innerHTML = adhtml;
    };
    

    令我惊讶的是,它有效!我现在有一个 Google Adsense 广告,它将根据页面加载后检索的 JSON 数据的结果显示。

    另外,对于任何可能想要做类似事情的人的进一步提示:首先将您的 Google 广告硬编码到 HTML 中,以确保它可以正常工作并且 Google 已接受它,然后再尝试使用 Javascript 或其他任何东西做任何花哨的事情。如果我早点意识到这一点,我可能会为自己节省一些时间。

    希望对可能想做同样事情的其他人有所帮助。

    【讨论】:

      【解决方案2】:

      我不确定...这里有几个 cmets:

      1. 希望您已经创建了 div id google-ad 框。

      2. document.write 仅适用一次
        当页面正在创建并且 DOM 正在形成时。因此,该代码必须位于 js 执行的最顶层。
        如果 DOM/Page 已经形成,write 将不起作用。

      【讨论】:

      • 感谢您的回答。 +1 让我走上了最终让我弄清楚我发布的答案的道路。对我的学习至关重要的是你说 document.write 只工作一次。我没有意识到这一点,一旦我理解了这一点,它就改变了我处理整个问题的方式。
      • 如果能帮到你我很高兴:)
      猜你喜欢
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 2017-11-28
      • 2011-01-21
      相关资源
      最近更新 更多