javascript - Adsense 内容仅显示空白方 block

标签 javascript php ajax wordpress adsense

在我的网站上,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>

最佳答案

看起来 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 信息,因为我认为在此答案中包含此类信息是不正确的。

关于javascript - Adsense 内容仅显示空白方 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22135182/

相关文章:

javascript - 在 firebase 云函数触发器上添加异常(exception)

php - Laravel [登录消息] 未找到异常

javascript - Ajax函数一次只显示一个div,PHP,AJAX

javascript - 使用ajax加载弹出窗口内容无法正常工作

javascript - 处理要显示的图像

javascript - 仅当从两个单选按钮中选择某些答案时才需要文本区域

javascript - 禁用悬停方法

php - 是否可以选择数据库中的两个表?

php - 如何在 PHP 中向空数组添加元素?

ajax - 提交时的 jQuery .click() 函数 - 不发送值