我知道这有点旧,但恕我直言,这是一种更好的方法:将其
添加到您的<head>
部分:
<script type="text/javascript">
window.onload = function() {
var iframe = document.createElement('iframe'),
randomDomain = Math.floor(Math.random() * (10000 - 100 + 1)) + 100,
iframeLoaded = true;
iframe.src = "http://"+ randomDomain +".com/ads.html";
iframe.height = ".1px";
iframe.width = ".1px";
iframe.id = 'some-ad';
iframe.onload = function() {iframeLoaded = false;};
document.body.appendChild(iframe);
setTimeout(function() {
var someAd = document.getElementById('some-ad');
if(!iframeLoaded ||
someAd == null ||
someAd.style.display == "none" ||
someAd.style.display == "hidden" ||
someAd.style.visibility == "hidden" ||
someAd.offsetHeight == 0)
document.getElementById('ab-message').style.display = 'block';
someAd.remove();
}, 500);
};
</script>`<br>
现在,您可以ab-message
在要向 AdBlock 用户显示消息的任何地方使用 id:
<div id="ab-message" style="display: none">Your message here!</div>
请注意添加的内联样式以将其隐藏(当然,您也可以从自己的 CSS 文件中执行此操作)。
另请注意,它需要 500 毫秒,这是因为它必须等待广告拦截器完成它的工作,否则它将无法工作。
关于这个脚本如何工作的一点解释
首先,它附加一个带有随机生成链接源的 iframe。(它是随机生成的,因为一些广告块很聪明,在某些时候,他们意识到链接是假的)。
然后它对该 iframe 运行多次检查(如果它已成功加载或它的样式是否已修改)。如果其中一项测试为真,那么它将ab-message
向广告屏蔽用户显示该元素。
该脚本适用于大多数(如果不是全部)广告拦截器。
额外的
真的,没有必要创建一个要点,而是我创建了一个 Github 项目,但是,如果它对你有帮助,请检查它并加注星标。
abDetector:简单的原生 JavaScript AdBlock 检测器。
享受。