勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

ブラウザの広告ブロッカーを検知し、ブロックしている場合は何らかの処理を行う方法

   2023/08/09  JavaScript

普段何らかのサイトを見る際はAdBlock等の広告ブロッカー系プラグインを導入したブラウザで閲覧することが多い。その際稀に「広告ブロッカーを解除してください」みたいなアラートが表示されるサイトに出くわすことがある。どういった方法で検知しているか気になったので調査及び導入メモ。

 

BlockAdblock

BlockAdblockというJSプラグインがあり、こちらを利用することで簡単に導入できる模様。

尚、CDN版もあるので必要に応じて利用する。また、他のプラグインやツールを用いたい場合はこちらの記事が参考になりそう。

 

ソースコード

<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>title</title>
</head>
<body>

    <div class="adBlockAlert" style="display:none;">広告ブロッカーを解除してください。</div>
    <script type="text/javascript" src="//code.jquery.com/jquery-3.5.1.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/blockadblock/3.2.1/blockadblock.min.js" integrity="sha512-EFY34xQ/AKRSb4EfjeRCO1TXnLuDQrYlo3BVId+DU8J4BiKUezCWK93bUlXTkEf4a8rMRroouaPXHnq/WTK4pA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

    <script>
        function adBlockDetected() {
            $(".adBlockAlert").show();
        }
        function adBlockNotDetected() {
            $(".adBlockAlert").hide();
        }
        if (typeof blockAdBlock === "undefined") {
            adBlockDetected();
        } else {
            blockAdBlock.onDetected(adBlockDetected);
            blockAdBlock.onNotDetected(adBlockNotDetected);
        }
    </script>

</body>
</html>

広告ブロッカーが検知された場合はclass="adBlockAlert"要素が表示されるので、該当部分をモーダルウィンドウで大きく表示する(他のコンテンツを見づらくする)等が使い道になりそう。

 

参考サイト

https://bicstone.me/block-adblock

 - JavaScript

  関連記事

jQueryにて何らかの処理中にブラウザをロックする「waitMe」プラグインの利用方法
jQueryにて何らかの処理中にブラウザをロックする「waitMe」プラグインの利用方法

jQueryにて何らかの処理中、ユーザーによるクリックや入力等の動作を防ぎたい。 ...

横スクロール可能な要素を視覚的に分かりやすくする「ScrollHint」ライブラリの利用方法
横スクロール可能な要素を視覚的に分かりやすくする「ScrollHint」ライブラリの利用方法

横長のtableを設置し、CSSのoverflowで横スクロール可能にしてもユー ...

JavaScriptで配列やオブジェクトの値を検索する方法
JavaScriptで配列やオブジェクトの値を検索する方法

JavaScriptにて配列やオブジェクトの値を検索する際、今までだとループを回 ...

セレクトメニュー(プルダウン)をdisplay:none;指定してもiPhoneのみ非表示にならない問題の対応方法
セレクトメニュー(プルダウン)をdisplay:none;指定してもiPhoneのみ非表示にならない問題の対応方法

セレクトメニュー(プルダウン)に対してdisplay:none;指定したりjQu ...

FileReader APIを用いて画像をアップロードせずにサムネイル表示
FileReader APIを用いて画像をアップロードせずにサムネイル表示

以前にFile APIを用いてファイル名やサイズ、形式(拡張子)を取得するメモを ...