2

好的,所以我正在开发一个响应式网站,并且我正在尝试以不会让我被禁止的最佳方式处理 Adsense!我想做的是仅当浏览器宽度小于 533px 时才使用 jQuery 添加到我的 Adsense 代码中。这样,我可以展示一个较小的广告,该广告将正确地适合窗口并且不会破坏布局。我在添加 Adsense javascript 时遇到了一些麻烦。这有效:

(function($){
//detect the width on page load
$(document).ready(function(){
var current_width = $(window).width();
//do something with the width value here!
if(current_width < 533){
        $('.ads').prepend("THIS IS WHERE I WANT THE ADSENSE CODE TO GO");
}
});

但是,当我包含我的 Adsense 代码来替换 THIS IS WHERE I WHERE ADSENSE TO GO 时,它没有。这是 Adsense 代码:

<script type="text/javascript"><!--
google_ad_client = "ca-pub-1234567890";
/* Test Ad */
google_ad_slot = "1234567890";
google_ad_width = 250;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

我还尝试将 Adsense javascript 代码包含在 .html 文件中,并将 jQuery.get 和 jQuery.getScript 用于 .html 和 .js 文件。我只是无法让它工作。

我可以通过简单的 PHP 标头检测来做到这一点,但我希望广告根据宽度而不是设备类型显示。

有谁知道如何做到这一点?

(重新发布为没有回复上一个问题)

4

3 回答 3

1

我不确定这是否可行,但值得一试:

/* these should be global */
google_ad_client = "ca-pub-1234567890";
/* Test Ad */
google_ad_slot = "1234567890";
google_ad_width = 250;
google_ad_height = 250;

$(function(){
    //detect the width on page load
    var current_width = $(window).width();
    //do something with the width value here!
    if(current_width < 533){
        $.getScript('http://pagead2.googlesyndication.com/pagead/show_ads.js');
    }
});
于 2012-04-11T18:42:12.923 回答
0

您是否尝试过像这样装载外部 .js?

   var script = document.createElement('script');
   script.src = 'http://pagead2.googlesyndication.com/pagead/show_ads.js';
   script.type = 'text/javascript';
   var head = document.getElementsByTagName("head")[0];
   head.appendChild(script);
于 2012-04-11T18:43:47.540 回答
0

您面临的问题是 Google 并不真正支持 AdSense ajax。包含 AdSense 代码的正常方式是使用其所在页面的 URL 来呈现正确的内容。

现在,假设您可以将 AdSense 代码缩减为特定的 URL。你可以这样做:

// note, this url is just a suggestion, not something that will likely work 

var url = 'http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1234567890&ad_slot=1234567890&ad_width=250&ad_height=250';

var adsContainer = $('.ads');  // though, if there's only one, use id, not class

$.ajax({
type:'GET',
    url:url,
    async:true,
    success:function(html) {
        adsContainer.html(html);
        return false;
    },
    error: function(html) {
      adsContainer.html('SOME DEFAULT AD MESSAGE');
      return false;
    } 
});

但我认为这几乎肯定会让你在谷歌遇到麻烦。

Google曾经有一个adsense ajax程序:

https://developers.google.com/adsense-for-ajax/

但它现在“不可用”。您不能将代码放在外部 .html 或 .php 文件中并在您自己的服务器上使用 ajax 的原因是 ajax 调用不会由客户端的引擎执行。您正在将原始 javascript 注入到已由 javascript 引擎解释的页面中。

您可以使用 node.js 或某种服务器端 javascript 解析器来为您的 .html 文件提供服务吗?也许吧,但要解决这个问题有很多。

我的建议是:包含多个较小的广告,如果堆叠在大页面上看起来不错,或者如果在小页面上挤在一起则平铺。

于 2012-04-11T19:02:04.997 回答