【问题标题】:Adsense content just displaying blank squareAdsense 内容只显示空白方块
【发布时间】:2014-03-05 15:07:22
【问题描述】:

在我的网站上,AdSense 内容是通过 javascript 动态加载的。文章内容通过 AJAX 检索,然后显示在页面上。显示时,AdSense 代码会附加到文章中。

你可以在http://thepresslist.com.au/看到它的实际应用

代码应显示在您可以看到“广告”一词的上方。在我这边,我只能看到广告应该出现的空白区域,但没有广告。查看最后一页的源代码,代码似乎是正确的。 AdBlock 已禁用,Javascript 已打开。我发现我的 AdSense 帐户中没有明显错误。

有没有人能够解释为什么没有显示广告?

这是生成广告展示位置的代码(数组是 Google AdSense 脚本,已分解,用于拆分 </script> 标记。

articleAd.innerHTML = <?php 
    $numItems = count($site_content_adverts); 
    $i = 0; 
    foreach ($site_content_adverts as &$value) { 
        if(++$i === $numItems) { 
            echo '"' . $value . '" + ';
        } else { 
            echo '"' . $value . '" + "pt>" + ';
        }
     }
?> "Advert";

在加载的页面上,上面的脚本是这样的(回显分解后的字符串后):

articleAd.innerHTML = "<style>.press-list-ad-1 { width: 320px; height: 50px; }@media(min-width: 500px) { .press-list-ad-1 { width: 468px; height: 60px; } }@media(min-width: 800px) { .press-list-ad-1 { width: 728px; height: 90px; } }</style><script async src=\"//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\"></scri" + "pt>" + "<!-- Press List Ad 1 --><ins class=\"adsbygoogle press-list-ad-1\"     style=\"display:inline-block\"     data-ad-client=\"ca-pub-1801533XXXXXXXX06\"     data-ad-slot=\"68XXXXXXXXX105\"></ins><scri" + "pt>" + "(adsbygoogle = window.adsbygoogle || []).push({});</scri" + "pt>" + "" +  "Advert";

这是每次加载新文章时呈现的代码:

<style>.press-list-ad-1 { width: 320px; height: 50px; }@media(min-width: 500px) { .press-list-ad-1 { width: 468px; height: 60px; } }@media(min-width: 800px) { .press-list-ad-1 { width: 728px; height: 90px; } }</style>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Press List Ad 1 -->
<ins class="adsbygoogle press-list-ad-1" style="display:inline-block" data-ad-client="ca-pub-1801XXXXX58006" data-ad-slot="6898XXXXXXX05"></ins>
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>

【问题讨论】:

  • 你的数组的内容是..?
  • AdWords 脚本已分解,以分解 标记。您可以看到它通过呈现的输出正确解析。
  • @Daedalus,最后一段代码来自最终渲染的文档,所以它必须正确地附加到文档中。 articleAd 是一个 div,然后附加到每个 Article div 的末尾。您可以在链接上看到它的实际效果...
  • 我删除了我的评论是有原因的;这是一个错误,chrome 开发工具没有渲染脚本的其余部分。
  • 据我所知,脚本根本没有被加载。它可能已添加到文档中,但浏览器并未加载它。对此进行调查。

标签: javascript php ajax wordpress adsense


【解决方案1】:

似乎browsers will ignore script tags created with innerHTML(只需在此处搜索innerHTML 即可找到参考)。

将脚本插入页面的正确方法是使用document.createElement。这是您上述代码的示例:

var articleAd = document.createElement("script");
articleAd.async = true;
articleAd.src = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js";
var articleIns = document.createElement("ins");
articleIns.dataset.adClient = "stuff goes here";   
articleIns.dataset.adSlot= "stuff goes here";
articleIns.className = "adsbygoogle press-list-ad-1";
var googlestuff = document.createElement("script");
googlestuff.text = "(adsbygoogle = window.adsbygoogle || []).push({});";
document.getElementsByTagName("body")[0].appendChild(articleIns);
document.getElementsByTagName("body")[0].appendChild(articleAd);
document.getElementsByTagName("body")[0].appendChild(googlestuff);

请注意,我删除了您的广告 ID 信息,因为我认为在此答案中包含此类信息是不正确的。

【讨论】:

  • @Tomn8r 我建议您查看this answer(并投票)以获取更多信息。
  • 不幸的是,使用您的代码它的行为没有任何不同。我现在求助于将广告预加载到隐藏的 div 中,然后在每篇文章加载时将其插入到可见的 div 中。我还没有在这里发布,因为它仍然不能完美地工作 - 需要在广告加载之前刷新页面......
  • @Tomn8r 我收回之前存在的评论所说的话。有一个错字。错字已修复。我刚刚测试了这个(更正的代码),它确实有效。请试一试。不过,以防万一你好奇,错字在这里:articleIns.dataset.adclient 应该是articleIns.dataset.adClient。大写字母 C 与众不同。
  • @Tomn8r 这一次,时间已经过去了。我正在努力帮助你;你至少可以回应:/
  • 抱歉回复时间长。您的代码似乎不起作用。当我将它与我当前的解决方案一起包含时,它有时会起作用,但它本身会不断返回一个 0px 高的广告空间。我认为我目前的解决方案接近工作。一旦我解决了问题,我将把它贴在这里,你可以看看。感谢您的努力。
猜你喜欢
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 2016-01-09
  • 2019-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多