Table of Contents
Safariのコンテンツブロッカーやブラウザ拡張のAdBlockなどが使用されているかをチェックして、その有無に応じて処理を行う方法です。
WordPressにはコンテンツブロッカーを検知するためのプラグインがありますが、今回はそれを使用しない最も簡単に実装できる方法を紹介します。
設定方法
外観 > テーマの編集 を開き、フッターテーマ(footer.php)の編集画面を開きます。
footer.php の一番下には body と html の閉じタグがあるので、その間に以下のようなjavascriptを設定します。
...(省略)...
</body>
<script>
window.onload = function() {
// 広告表示部分のクラス名
var adName = "adsbygoogle";
// 広告表示要素
var targetAd = document.getElementsByClassName(adName);
if (!targetAd.length) {
// 広告表示要素がページ内に存在しないなら処理を中断
return;
}
if (!targetAd[0].getElementsByTagName('iframe').length) {
// アドブロック検出
// ここにコンテンツブロックされた時に行いたい処理を書く
console.log("ブロックされた");
}
};
</script>
</html>
今回は Google Adsense の広告を対象とするブロッカーのチェックを行っています。
別の広告がブロックされていることを検知したい場合は、変数 adName を変更します。
検知の原理
多くの広告はiframeをページに埋め込み、その中にバナーなどを挿入します。しかし、コンテンツブロッカーが働くと、このiframeがページ内から除去されます。
したがって、広告を表示する部分のタグのclass属性に値を設定しておき、その値を持つタグの中にiframeが存在しているかを確かめると、広告表示がブロックされたかどうかを調べられます。iframeが無くなっていればコンテンツブロッカーが働いていると判断できます。
しかし、通信状態の関係でページの一部読み込みが上手く行かないようなときも、iframeが無くなることがあります。そのため、状況によってはまれに誤動作を起こす可能性があります。
より完璧な動作を目指すのであれば、プラグインを導入することをお勧めします。
