是否有可能通过 JavaScript 来检测用户浏览器是否安装了 AdBlock?

2014-08-30 22:00:43 +08:00
 Livid
11780 次点击
所在节点    JavaScript
39 条回复
paulguo
2014-08-30 22:03:30 +08:00
或许这是一种检测的方式: http://erikswan.net/abp/
lwbjing
2014-08-30 22:04:54 +08:00
1、可以通过BOM来检测某些插件,但不是所有浏览器都兼容;
2、可以通过延时检测自己的广告frame是否加载出来。
lwrless
2014-08-30 22:11:38 +08:00
可以的吧,用js检查一下有没有被加上 display:none 应该就可以判断有无屏蔽广告的插件
adeweb
2014-08-30 22:12:43 +08:00
http://bbs.pcbeta.com/
让我想起这个论坛,ADB激活时会显示一条banner提示“去广告虽易,做论坛不易,且行且珍惜。”

可以延时检测广告区域的可见性和尺寸。
xxstop
2014-08-30 22:19:36 +08:00
@adeweb +1.我也是想起这个。
ccbikai
2014-08-30 23:12:16 +08:00
这里有个检测方法 https://tumutanzi.com/archives/12667
lyragosa
2014-08-30 23:17:19 +08:00
我的做法是这样的(不用任何js,纯粹用css)

将广告和另一个层叠加在一起(物理位置重合,z-index调整位置),广告覆盖后面那个层。

在后面那个层用background绘制一个和广告大小等同的背景图,上面写上替代文字。

这样就无需任何额外代码,当这个广告被屏蔽的时候,无论是dom被remove掉,或者是dom被设置成displaynone,其底下那个层都会被露出来。

效果可以参见我的网站 http://www.linodas.com 首页,最下面的横条Adsense广告 。
csx163
2014-08-30 23:37:33 +08:00
记得某H网站你屏蔽它广告它给你强制看凤姐的恐怖的图
loveminds
2014-08-30 23:43:43 +08:00
没必要检测,如果广告合格,去申请非侵入式广告白名单
只有静态广告(不含动画、声音之类的内容)
最好只有文字,没有影响注意力的图片
广告布局方式:
广告不应遮盖网页内容(例如要求用户点击按钮关闭广告后才能浏览网页)。
对于以文字阅读为主的网页,为避免影响用户顺利阅读,广告不应放在文字内容中间位置, 而应放在上下方或左右两侧。 同样,显示搜索结果页面时也不应将付费搜索结果与普通的搜索结果混在一起。
广告置于网页主区域上方时不应要求用户向下滚动鼠标。 这样可用的垂直空间距离一般至少为 700 像素,而广告占用高度不应超过其三分之一。 搜索结果页面中的付费结果则允许占用更大空间,但不应多于普通的搜索结果。
置于两侧的广告应留出足够空间用于显示网页的主要区域。 这样可用的水平空间距离一般至少为 1000 像素,而广告占用宽度不应超过其三分之一。
广告应使用"广告"或相同的字眼进行明确标识,并通过边框或不同的背景色与网页内容区别开来。
上述有关标识和位置的要求不适用于网页中带有经销商推荐人 ID 的超链接。这类超链接的具体要求如下:
由超链接重定向到目标页面的过程中不允许跳转到其他任何页面。
加入超链接用于变现的文字不超过 2%。
超链接的格式或行为不得异于其他链接。
无论是内容还是位置上,超链接都不得误导他人。
wwqgtxx
2014-08-30 23:59:06 +08:00
@lyragosa 啥也没看到,来自uc浏览器
hsu
2014-08-31 00:02:33 +08:00
@lyragosa 原来你是这个站的作者?
shajiquan
2014-08-31 00:10:13 +08:00
imn1
2014-08-31 00:33:18 +08:00
矛:anti-adblock 脚本
盾:油猴脚本 anti-adblock killer
BOOM
2014-08-31 00:36:35 +08:00
反正我在v2ex是未启用adb的。。
lyragosa
2014-08-31 01:09:14 +08:00
@wwqgtxx UC浏览器可能会中转服务器数据,导致js不执行而看不到
手机浏览器的话用chrome或者safari没问题的。
@hsu 是的。
Showfom
2014-08-31 01:12:27 +08:00
当然有的

见这里

http://antiblock.org/
typcn
2014-08-31 01:30:23 +08:00
看一下Easylist 这个应该基本都订阅了 ,在里面随便找一个被屏蔽的元素 如.adcontent

CreateElement 然后检测 offsetHeight

应该是这样
typcn
2014-08-31 01:32:36 +08:00
http://blog.eqoe.cn/archives/check-adb.html 我的blog目前是用的这种的
why
2014-08-31 01:47:45 +08:00
|| shExpMatch(url, 'https://static.v2ex.com/jobs/*')

我这样子的
wwqgtxx
2014-08-31 09:07:56 +08:00
@lyragosa 早就关闭中转了,再说不执行js的浏览器是功能机时代的吧,智能机浏览器不执行js,第一次听说…,那我还能用uc上微博和gmail/twitter么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/130841

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX