3

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

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 测试目的)并根据需要重新定位它们。关于如何让它发挥作用的任何想法?

4

2 回答 2

1

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

第 1 步
使用您的 adsense 代码在您的服务器上创建一个 HTML 文件,例如:

<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 中没有间距,并且广告代码紧贴 iframe 的边框。

第 3 步
动态添加 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

于 2011-06-01T18:42:56.620 回答
0

我将 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>
于 2010-07-20T11:30:49.723 回答