代码之家  ›  专栏  ›  技术社区  ›  Bemmu

动态AdSense单元

  •  3
  • Bemmu  · 技术社区  · 16 年前

    我有一个OpenSocial应用程序,想试试AdSense。我可以轻松地运行Javascript,但不能直接包含HTML片段。出于这个原因,我试图拿出一个脚本,将创建一个DIV,其中包含AdSense广告。

    function adsense(w, h, slot) {
    google_ad_client = "pub-4815352041522054";
    google_ad_slot = slot;
    google_ad_width = w;
    google_ad_height = h;
    
    var url = "http://pagead2.googlesyndication.com/pagead/show_ads.js";    
    document.write(
        '<div style="border:solid 3px red;">'
        + '<sc' + 'ript src="' + url + '">'
        + '</sc' + 'ript>'
        + 'The ad should be inside the same box as this text.</div>'
      );
    }
    
    adsense(160, 600, 5133629129);
    

    上面的代码将编写一个带有红色边框的div,并将AdSense单元放在其中。这在Chrome上运行良好,但在IE上,引用的AdSense代码似乎在div关闭之后运行。

    我希望能够从代码中动态创建AdSense单元(例如用于A/B测试目的),并根据需要重新定位它们。有什么办法让它工作吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Oscar Godson    15 年前

    很明显,现在已经太迟了,但是我也遇到了同样的问题,我在StackOverflow上问了这个问题(很快也会在那里发布长格式的答案),但是你唯一能做的就是将它加载到iframe中。

    第一步

    <script type="text/javascript"><!--
    google_ad_client = "ca-pub-xxxxxxxxxxxx";
    /* Some Ad */
    google_ad_slot = "xxxxxxxxx";
    google_ad_width = 468;
    google_ad_height = 60;
    //--></script>
    <script type="text/javascript"
      src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script>
    

    第2步

    在刚才创建的同一个HTML文件中,在顶部添加:

    <style> body {padding:0;margin:0;} </style>
    

    这将确保iframe中没有间隔,并且ad代码紧贴iframe的边界。


    动态添加iframe,如:

    var insertAdsenseIframe = function(src,width,height){
      var iframe = document.createElement('iframe');
      iframe.setAttribute("frameborder","0");
      iframe.setAttribute("src", src);
      iframe.setAttribute("width", width);
      iframe.setAttribute("height", height);
      return iframe; //Return it so you can use whatever method you want to insert/append
    }
    
    var myIframe = insertAdsenseIframe('http://oscargodson.com/dev/scriptTest/cleariframe.html','468px','60px');
    
    document.getElementById('test').appendChild(myIframe);
    

    JavaScript只是一个示例,但很有效。我从没考过IE什么的。这只是让你开始。

    演示

    因为在JSBin上发布这个是违反TOS的,所以StackOverflow我刚刚创建了一个广告形式的div,但是如果你把广告放进去,它会工作的。

    请参见: http://jsbin.com/evoqi6/ http://jsbin.com/evoqi6/edit

        2
  •  0
  •   Ahmed Aman    16 年前

    我把div标签放在外面,它起作用了。。看起来IE处理javascript的方式有问题。。

    <div style="border:solid 3px red">
    <script type="text/javascript" charset="utf-8">
    
    function adsense(w, h, slot) {
    google_ad_client = "pub-4815352041522054";
    google_ad_slot = slot;
    google_ad_width = w;
    google_ad_height = h;
    
    var url = "http://pagead2.googlesyndication.com/pagead/show_ads.js";    
    document.write(
         '<sc' + 'ript src="' + url + '">'
        + '</sc' + 'ript>'
        + 'The ad should be inside the same box as this text.'
      );
    }
    
    adsense(160, 600, 5133629129);
    
    
    </script>
    </div>