我希望在我的网站上检测广告拦截软件,并要求用户通过重定向来禁用广告拦截。我发现的唯一方法是使用 Javascript。
有没有其他检测方法?
如果没有,我如何检测 Javascript 是否被禁用并将它们重定向到某个页面?
我希望在我的网站上检测广告拦截软件,并要求用户通过重定向来禁用广告拦截。我发现的唯一方法是使用 Javascript。
有没有其他检测方法?
如果没有,我如何检测 Javascript 是否被禁用并将它们重定向到某个页面?
要检测用户是否阻止广告,您所要做的就是在广告 javascript 中找到一个函数并尝试对其进行测试。他们使用什么方法来屏蔽广告并不重要。以下是 Google Adsense 广告的外观:
if(typeof(window.google_render_ad)=="undefined")
{
//They're blocking ads, do something else.
}
此处概述了此方法:http ://www.metamorphosite.com/detect-web-popup-blocker-software-adblock-spam
要重定向禁用 javascript 的所有用户,只需将此代码放在 HTML 的头部:
<noscript>
<meta http-equiv="refresh" content="5;url=http://newsite.com/">
</noscript>
如果禁用了javascript,您实际上无法“检测”。由于 javascript 是客户端功能,服务器无法检测到它,而客户端“检测”的事情是使用 javascript 完成的。你看到了第 22 个问题。
可用的是<noscript>
标签,它仅在关闭 javascript 时由浏览器呈现。这是在禁用 javascript 时向用户显示消息的标准机制。使用 noscript 和聪明的 CSS,您可以强制用户启用 javascript 或按照您提供的重定向链接使用您的网站。
无法仅自动重定向禁用了 javascript 的用户。您可以使用 javascript 有选择地重定向用户,也可以根据服务器端标准(HTTP 标头等)重定向用户。但你无法抓住那个中间群体。
至于检测广告拦截,这将因浏览器和广告拦截方法而异。它没有一致的标志,但您可以执行诸如通过 javascript 检查广告服务器的可用性或检查您的广告内容是否已加载到页面上的操作。
我从这篇文章中引用这个主题:
http://w3guy.com/detecting-adblock/
HTML
<div class="myTestAd">
<!-- Adsense Ad code goes here -->
</div>
JS:
if ($('.myTestAd').height() == 0) {
// stuff to do if adBlock is active
}
我无法获得@Beau 的解决方案来检查“window.google_render_ad”,但它在检查“window.google_jobrunner”时确实有效。
自发布原始答案以来,可能 Adsense 代码已更改,我在从 Adsense 下载的 JS 中找到了“google_jobrunner”,但没有找到“google_render_ad”。