如何检测我的AdSense广告是否被屏蔽?

Igo*_*mić 5 javascript adsense adblock

如果用户安装了某种广告拦截器,广告拦截器当然会从我的网站上删除所有广告,并留下广告所在的空白区域.我想通过在其中添加一些其他内容来使用该空白空间,例如链接到我网站的大多数重要页面,我需要检测是否加载了AdSense javascript.

到目前为止我尝试过的方法:

if (!document.getElementById("google_ads_frame1"))
{
}
Run Code Online (Sandbox Code Playgroud)

和:

if (typeof(window.google_render_ad) == "undefined")
{
}
Run Code Online (Sandbox Code Playgroud)

在某些情况下,这两种情况似乎都失败了,例如,如果浏览器下载AdSense javascript文件的速度稍慢,它会在加载AdSense代码之前执行上述代码,并且最终会为那些甚至没有广告被屏蔽的用户隐藏广告.

您对如何确保我的代码在AdSense之后运行有任何建议吗?或者是否有其他方法可以检测到AdSense脚本未加载?

Tro*_*use 6

如果使用新的AdSense代码,您可以轻松检查,而无需借助内容或CSS检查.

在标记中正常放置广告:

<ins class="adsbygoogle" style="display: block;"
   data-ad-client="ca-pub-######"
   data-ad-slot="#######"
   data-ad-format="auto"></ins>
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
Run Code Online (Sandbox Code Playgroud)

然后你调用页面底部的adsense代码(注意"async"在调用adsbygoogle.js脚本时不要使用标志):

<script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
Run Code Online (Sandbox Code Playgroud)

然后在下面添加以下代码片段:

<script>
if (!adsbygoogle.loaded) {
   // do something to alert the user
}
</script>
Run Code Online (Sandbox Code Playgroud)

AdSense的总能创建标志/套adsbygoogle.loadedtrue时加载的广告.您可以将检查放入setTimeout函数以将检查延迟几秒钟.


Dog*_*ert 3

在事件上运行此代码window.onloadwindow.onload当页面加载完成时会触发该事件。

window.onload = function() {
  // your checks
}
Run Code Online (Sandbox Code Playgroud)

如果您使用 jQuery,请使用

$(window).load(function() {
  // your checks
});
Run Code Online (Sandbox Code Playgroud)

  • 你的 jQuery 示例是 `$(document).ready()` 的简写,它将在 `window.onload` 之前触发。您可以使用 jQuery 通过“$(window).load(fn)”附加“window.onload”处理程序。 (2认同)