私はこれがちょっと古いことを知っていますが、ここにそれを行うためのより良い方法があります:
これをあなたのセクションに追加してください<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 に対して複数のチェックを実行します (正常に読み込まれたか、スタイルが変更されたかどうか)。これらのテストのいずれかが true の場合、ab-message
要素を表示してユーザーをアドブロックします。
このスクリプトは、ほとんどの (すべてではないにしても) 広告ブロッカーで機能します。
追加
要点を作成するだけでは意味がありませんが、代わりに Github プロジェクトを作成しましたが、それでも、それをチェックして、役に立った場合はスターを付けてください。
abDetector: シンプルなバニラ JavaScript AdBlock 検出器。
楽しみ。