为什么插入Adsense广告的这个Javascript代码不起作用?

时间:2012-06-30 06:29:28

标签: javascript adsense

advice from this question开始,我进行了一些搜索,并在this web site上找到了一些代码,用于将Google Adsense广告插入我网页上的特定位置,之后页面已加载。在我的情况下,我做一些Javascript检查,将JSON数据发送回我的服务器,然后根据我从该JSON获得的响应,我决定是否显示谷歌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。

因此,广告未展示。

我的代码在哪里出错?

2 个答案:

答案 0 :(得分:2)

原来问题是if(html == '</iframe>')行。我曾认为这与Google如何构建adsense广告有关,但它必须与最初编码的人如何构建其HTML有关。

在我的情况下,我根本不需要它。我的代码现在已更改为:

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

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

此外,对于任何可能想要做类似事情的人,请进一步提示:首先将您的Google广告硬编码到HTML中以确保其有效,并且Google在尝试使用Javascript或其他任何内容做任何事情之前已接受它。如果我早点意识到这一点,我本可以节省一些时间。

希望能帮助那些可能想做同样事情的人。

答案 1 :(得分:1)

我不确定......以下是一些评论:

  1. 我希望你已经创建了div google-ad框。

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