アカウント名:
パスワード:
Safari(iOS 9)の広告ブロックは、特定の class や id の要素を削除できる拡張を製作できるようにしているようです。パソコン向けブラウザの AdBlock 拡張も似たような方法で広告をブロックしています。
Webサイトから広告収入を得ている人にとっては広告ブロックはやめていただきたいものですが、広告ブロッカーを導入している人のアクセスを遮断するという対応だと、当該のアクセスから収益を得られなくなってしまいます。
従って、メインコンテンツの class を「ad ads ads-area adsbygoogle」など(複数指定)にして広告ブロック導入者には表示されないようにして、広告ブロックを導入している人には、
動作確認をしてみたところ、不具合があって意図したとおりに動作しなかったので、JavaScript部分(script 要素内)を修正しました。
今度のコードは、主要ブラウザで動作確認済みです。
<script>function adBlockBlocker(){ // 広告ブロックされている状態かどうかの判定 if (document.getElementById('mainContents').style.display == 'none' || document.getElementById('mainContents').style.visibility == 'hidden' || document.getElementById('mainContents').clientWidth < 10 || document.getElementById('mainContents').clientHeight < 10 ) { // 広告ブロッカー導入者向けの告知を表示させて、 document.getElementById('noticeForAdBlocker').style.display = 'block'; // ついでに Google Adsense 広告のブロックを無効にしてやる // これで広告ブロックしている人にも AdSense 広告が表示されるはず? // (Google の広告は JavaScript で DOMに対して class="adsbygoogle" な 要素を作る) // ただGoogle AdSenseの生成する要素は多重になってるので広告ブロッカーがどの段階でブロックするかによっては正常に動作しない可能性があるので // あらゆる広告ブロッカーに対して有効にするためには色々な広告ブロッカー導入時のDOMの状態を確認して修正を加える必要があります var googleAds = document.getElementsByClassName('adsbygoogle'); for (var i = 0; i < googleAds.length; i++) { googleAds[i].style.display = 'inline-block'; googleAds[i].style.visibility = 'visible'; } // ↑で広告ブロッカーによってブロックされたコンテンツ部分も表示されるようになっちゃったので // 広告ブロックを解除するまで見られないように非表示に戻しておく【※追加しました】 document.getElementById('mainContents').style.display = 'none'; }}// 広告ブロッカーが遅れて動作するかもしれないので1秒待ってからやる// 【※修正しました】taka2 様 ご指摘ありがとうございましたsetTimeout(adBlockBlocker, 1000);</script>
ふと不安に感じたのですが、もし検索エンジンが class 名を見ていた場合、メインコンテンツを "ad ads ads-area adsbygoogle" という class 付の要素内に入れることで、コンテンツ部分が広告だと誤認され、SEO的に不利になってしまうかもしれません(推測に過ぎませんが)。
多少不安なので、メインサイトでは導入せず、アクセスが少なめなブログに導入して検索順位の変動について様子を見てみることにします。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日本発のオープンソースソフトウェアは42件 -- ある官僚
広告ブロックを無効にするコードを書いてみた (スコア:0, オフトピック)
Safari(iOS 9)の広告ブロックは、特定の class や id の要素を削除できる拡張を製作できるようにしているようです。パソコン向けブラウザの AdBlock 拡張も似たような方法で広告をブロックしています。
Webサイトから広告収入を得ている人にとっては広告ブロックはやめていただきたいものですが、広告ブロッカーを導入している人のアクセスを遮断するという対応だと、当該のアクセスから収益を得られなくなってしまいます。
従って、メインコンテンツの class を「ad ads ads-area adsbygoogle」など(複数指定)にして広告ブロック導入者には表示されないようにして、広告ブロックを導入している人には、
【不具合修正版】 さっきのコードは正常に動作しませんでした (スコア:0, フレームのもと)
動作確認をしてみたところ、不具合があって意図したとおりに動作しなかったので、JavaScript部分(script 要素内)を修正しました。
今度のコードは、主要ブラウザで動作確認済みです。
ふと不安に感じたのですが、もし検索エンジンが class 名を見ていた場合、メインコンテンツを "ad ads ads-area adsbygoogle" という class 付の要素内に入れることで、コンテンツ部分が広告だと誤認され、SEO的に不利になってしまうかもしれません(推測に過ぎませんが)。
多少不安なので、メインサイトでは導入せず、アクセスが少なめなブログに導入して検索順位の変動について様子を見てみることにします。