15

私は広告資金によるプロジェクトに取り組んでいます。性器の拡大などのための不完全なポップアップではなく、本当に微妙でコンテンツを意識したものです。

プロジェクトは広告資金で運営されているので、広告ブロッカーを持っている人はプロジェクトに利益をもたらしません(彼らは明らかにその特定のサイトの広告がそれほど悪くないことを知らないので)。

広告ブロッカーを持つ人々のために代替コンテンツを表示するにはどうすればよいですか?何かのようなもの

アクティブな広告ブロッカーがあることに気づきました。Example.comは広告資金で運営されており、高品質で目立たない広告をお約束します。私たちを運営し続けるためにあなたが提供できる最善の助けは、あなたの広告ブロッカーで私たちをホワイトリストに載せることです。ありがとう!

広告ブロッカーをテストするにはどうすればよいですか?

例を見つけました!http://mangastream.com

4

9 に答える 9

17

広告ブロッカーは基本的に、データベースに保存されている選択ルールのようないくつかのIDまたはjQueryを持ついくつかの要素を操作し、DOMの準備ができてからしばらくしてから実行されます。

そのため、特定の時間(DOMの準備ができてから3秒後など)後に広告要素が操作されているかどうかを確認する必要があります。基本的に、display(AdBlockersが非表示にするため)CSSプロパティまたは広告要素のinnerHTMLを確認できます。以下に例を示します。

作業デモ: http: //jsfiddle.net/cxvNy/AdBlock for Chromeを使用してテスト済み、これをアクティブにする必要があります)

広告HTMLが次の場合:

<div id="google_ads_frame1">aa</div>

それで:

$(function(){
   setTimeout(function(){
      if($("#google_ads_frame1").css('display')=="none") //use your ad's id here I have used Google Adense
      {
          $('body').html("We noticed you have an active Ad Blocker. Example.com is ad funded, we promise our ads are of high quality and are unobtrusive. The best help you could provide to keep us running, is to whitelist us in your ad blocker. Thanks!");
      }
  },3000);
});

上記のコードが自明であることを願っています:)

于 2011-12-24T19:08:45.027 に答える
6

最終的に、私は次の実装を使用しました(このサイトのと同様)。次のコードが使用されます。

function abp() {
    if ($('.ad').height() == 0) {
        $('.ad').css("height", "90px");
        $('.ad').css("background-image", "url(/static/images/msblock.png)");
    }
}
$(abp);

ドキュメントの最後に。プロのように働いているようです。みんなの素晴らしい答えをありがとう、みんなに賛成!

于 2011-12-24T20:22:37.777 に答える
3

ここではヒップから撮影しますが、ページが読み込まれた後、JavaScriptを使用して広告のdivのコンテンツを確認できます。

<!-- html -->
    <div id="MyAdDiv">
       <div id="BeaconContainer" style="display:none">I rendered!</div>
       // Ad content here.  
    </div>

// javascript

    var d = document.getElementById("MyAdDiv");

    if ( d.innerHTML.indexOf("I rendered!") === -1 )  {
       // Your ad has been blocked.
       // Run code to launch WhiteList request message.
    }

adblockerがいつそれを行うのか正確にはわからないので、setTimeout()を使用してこの関数の実行を数秒間遅らせることをお勧めします。広告ブロッカーを実行しているユーザーの数に関する統計を収集するなど、いくつかのajax呼び出しで実行できる興味深いことがいくつかあるでしょう。経営陣はそのようなものが大好きです。

更新: Chrome用のadblockをインストールし、StackOverflowと照合しました。AdBlockは広告コンテナのコンテンツを削除するだけのように見えるので、上記の方法が機能します。

于 2011-12-24T18:59:54.480 に答える
2

最も一般的なトリックは、たとえば、アドブロッカーによって一般的にブロックされる名前のJavaScriptファイルを作成することです/ads/advert.js。ファイルがブロックされた場合、訪問者がアドブロッカーを有効にしていることがわかります。

CSSファイルは通常、アドブロッカーリストによってブロックされないため、これはより安全なアプローチです。

于 2011-12-24T18:56:14.607 に答える
2

これは、jQueryを使用せずに、単純なJavaScriptでも実行できます。

<script>
window.onload = function(){
  setTimeout(showAdblockImage, 3000); 
};
function showAdblockImage(){
    //get all google ad elements
    var adsList = document.querySelectorAll("ins.adsbygoogle");
    if(!adsList){ return;}
    for(var i=0; i<adsList.length;i++){
        if(adsList[i].innerHTML.replace(/\s/g, "").length != 0){
            //AdBlock is not active, hence exit
            break;
        }
        //apply inline css to force display
        adsList[i].style.cssText = 'display:block !important';
        //modify html content of element
        adsList[i].innerHTML='<img src="imageurl/img_1.jpg" />';
    } 
}
</script>

参照:AdBlock打ち切り広告の代わりに代替コンテンツを配置する

于 2014-07-27T12:48:50.197 に答える
0

広告ブロッカーがどのように機能するかはわかりませんが、たとえば、私が持っているChrome広告ブロッカーを使用すると、削除する広告を含む特定のDOM要素を選択できます<div id="ad_holder"> ... ads ... </div>

そのdiv内に、グローバル変数を変更する短いタイマーと、後で実行されてそのグローバル変数を読み取る別のタイマーを使用してjavascriptを配置すると、変数が適切に設定されていますか?Chromeがそのjavascriptを評価した後にブロッカーがdivを削除した場合、親divが削除されても、タイマーは変数を設定できますか?

AdBlockは、「不良」サーバーの公開リスト(http://www.doubleclick.com?)も保持しており、これらのサーバーからのコンテンツに対するhttp要求をブロックする可能性があります。これは、Chromeと統合して、ある種のコンテンツポリシー(ロードされるものとロードされないもの)を定義できる場合に実行できます。この場合は、前述のアプローチで検出できます。あなたのクライアントが広告プロバイダーであるなら、遅かれ早かれそれはブラックリストに載ってしまうでしょう:)

ブロッカーはCSSを変更し、div全体を非表示にするだけかもしれませんが、これは簡単に検出できます。

于 2011-12-24T18:51:47.267 に答える
0

私のお気に入りのアプローチは、「ads」や「ad」などのクラスをサイトのすべての便利なコンテンツブロックの周りに追加するだけです。そうすれば、広告ブロッカーを持っている人は何も見えなくなります。

コンテンツを表示するために、広告ブロックを無効にする必要があります。

警告を気にしないで、彼らにそれを理解させてください。広告ブロックソフトウェアを使用しているダミーではありません。

これは、いくつかの一般的なadblock拡張機能からのブロックルールの現在のリストです。ブロックしているクラスまたはIDを選択するだけです(開発者ツールを使用してcssクラスのリストを表示します)

于 2014-06-20T22:33:48.443 に答える
0
<script> // Run after all the page elements have loaded  window.onload = function(){ 
// This will take care of asynchronous Google ads
setTimeout(function() {     
  // We are targeting the first banner ad of AdSense
  var ad = document.querySelector("ins.adsbygoogle"); 
  // If the ad contains no innerHTML, ad blockers are at work
  if (ad && ad.innerHTML.replace(/\s/g, "").length == 0) {     
    // Since ad blocks hide ads using CSS too
    ad.style.cssText = 'display:block !important';         
    // You can put any text, image or even IFRAME tags here
    ad.innerHTML = '<img src="http://blog.liveurlifehere.com/wp-content/uploads/2015/01/adblock.jpg" width="300" height="250" />';      
  }      
}, 2000); // The ad blocker check is performed 2 seconds after the page load   }; </script>

このコードを使用すると、Google広告の代わりに画像を設定できます

于 2015-01-10T01:06:22.027 に答える
0

https://github.com/sitexw/FuckAdBlockを実装できます。これは非常に優れていて使いやすいです。

于 2017-08-10T06:53:59.077 に答える