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脚本未加载?
如果使用新的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.loaded到true时加载的广告.您可以将检查放入setTimeout函数以将检查延迟几秒钟.
在事件上运行此代码window.onload。window.onload当页面加载完成时会触发该事件。
window.onload = function() {
// your checks
}
Run Code Online (Sandbox Code Playgroud)
如果您使用 jQuery,请使用
$(window).load(function() {
// your checks
});
Run Code Online (Sandbox Code Playgroud)