如果用户安装了某种类型的广告拦截器,广告拦截器当然会从我的网站上删除所有广告,并在广告过去所在的地方留下空白。我想通过在其中放入一些其他内容来使用这个空白空间,比如链接到我网站最重要的页面的链接,这样我就需要检测是否加载了AdSense javascript。
到目前为止我已经尝试过的方法:
if (!document.getElementById("google_ads_frame1"))
{
}和:
if (typeof(window.google_render_ad) == "undefined")
{
}在某些情况下,这两种方法似乎都失败了,例如,如果浏览器下载AdSense javascript文件慢一点,它将在AdSense代码加载之前执行上面提到的代码,而我最终会为甚至没有广告屏蔽的用户隐藏广告。
关于如何确保我的代码在AdSense之后运行,你有什么建议吗?或者其他检测AdSense脚本是否未加载的方法?
发布于 2011-02-20 04:37:17
在window.onload事件上运行此代码。window.onload事件在页面完成加载时激发。
window.onload = function() {
// your checks
}如果使用的是jQuery,请使用
$(window).load(function() {
// your checks
});发布于 2015-03-29 03:12:35
如果使用新的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>然后在页面的底部调用adsense代码(注意,在调用adsbygoogle.js脚本时不要使用"async"标志):
<script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>然后在下面添加一小段代码:
<script>
if (!adsbygoogle.loaded) {
// do something to alert the user
}
</script>在加载广告时,AdSense总是创建/设置标志adsbygoogle.loaded为true。您可以将检查放在setTimeout函数中,以将检查延迟几秒钟。
发布于 2015-08-13 07:41:21
这种超轻量级的方法似乎是万无一失的,并且对所有的广告网络都是不可知的。
在根文件夹中放置一个名为ads.js的文件,并在其中添加以下行:
var can_run_ads = true;Adblock不允许加载名为ads.js的文件。所以,只需将这段代码放在</body>之前
<script src="/ads.js"></script>
<script>
if(window.can_run_ads === undefined) {
alert('Please Disable Adblock, ****** ******!');
}
</script>';我强烈建议将用户重定向到一个页面,其中包含如何删除Adblock的说明。
https://stackoverflow.com/questions/5053317
复制相似问题