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

Why is this Javascript code for inserting an Adsense ad not working?

本文关键字:Javascript 代码 不起作用 Adsense 用于 插入 为什么      更新时间:2023-09-26

从这个问题的建议开始,我做了一些搜索,在这个网站上找到了一些代码,目的是在页面加载,将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。

因此,广告没有显示。

我的代码哪里出了问题?

事实证明,问题出在if(html == '</iframe>')行上。我曾认为这与谷歌如何构建adsense广告有关,但它一定是最初编码的人需要如何构建他们的HTML的特殊原因。

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

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

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

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

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

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

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

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