दिलचस्प पोस्ट
स्ट्रिंग लीटरल्स के रूप में एनाम मानों का उपयोग करना समारोह eregi () नापसंद है आप NSAttributedString का उपयोग कैसे करते हैं? Xcode के सभी अपवाद ब्रेकपॉइंट का उपयोग करते समय कुछ अपवादों को अनदेखा करें एएसपी.नेट एमवीसी एक्शनलिंक और पोस्ट विधि क्या आईएमडीबी एक एपीआई प्रदान करता है? डिवाइस पर SQLite डेटाबेस का स्थान मेमोरी रिसाव का पता लगाने के उपकरण क्या उद्देश्य-सी में कुछ शाब्दिक शब्दकोश या सरणी सिंटैक्स है? फ़ायरवॉल के पीछे HTTPS पर GitHub तक पहुंचने का प्रयास करते हुए SSL प्रमाणपत्र अस्वीकार कर दिया गया सीएसवी फ़ाइल को सीधे MySQL में आयात करें AJAX और jQuery के साथ एचटीएमएल 5 फ़ाइल अपलोड का उपयोग करना पायथन आयात कोडिंग शैली एक ही स्थान से गैर- ASCII वर्ण बदलें आप विकास कोड और उत्पादन कोड कैसे बनाए रखते हैं?

मेरी वेबसाइट पर एडब्लॉक को कैसे निकालना है?

मैं यह जानना चाहता हूं कि उपयोगकर्ता विज्ञापन पर चलने वाले सॉफ्टवेयर का उपयोग कर रहे हैं, जब वे मेरी वेबसाइट पर जाते हैं अगर वे इसे प्रयोग कर रहे हैं, तो मैं एक संदेश प्रदर्शित करना चाहता हूं ताकि वह इस परियोजना को समर्थन देने के लिए बंद कर सके, जैसे कि यह वेबसाइट करता है।

यदि आप उस साइट पर प्रवेश करते हैं और आपके ब्राउज़र में एडब्लॉक सॉफ़्टवेयर सक्षम है, तो वास्तविक विज्ञापन दिखाने के बजाय साइट को थोड़ा बैन दिखाता है कि विज्ञापन राजस्व प्रोजेक्ट की मेजबानी करने के लिए उपयोग किया जाता है और उन्हें एडब्लॉक बंद करना चाहिए ।

मैं अपनी वेबसाइट पर ऐसा करना चाहता हूं, मैं इस पर ऐडसेंस विज्ञापनों का उपयोग कर रहा हूं, मैं यह कैसे कर सकता हूं?

वेब के समाधान से एकत्रित समाधान "मेरी वेबसाइट पर एडब्लॉक को कैसे निकालना है?"

मेरा समाधान किसी विशिष्ट विज्ञापन नेटवर्क के लिए विशिष्ट नहीं है और बहुत हल्के है। मैं इसे कुछ सालों के लिए उत्पादन में चला रहा हूं "विज्ञापन" शब्द वाले सभी URL को एडब्लॉक अवरुद्ध करता है तो यही वह है जो मैंने किया:

मैंने अपने webroot के नाम ads.js साथ एक छोटी सी जेएस फाइल जोड़ा

यह उस फ़ाइल में कोड की एकमात्र रेखा है

 var canRunAds = true; 

फिर कहीं मेरे पृष्ठ में:

 <html> <head> <script src="/js/ads.js"></script> </head> <body> <script> if( window.canRunAds === undefined ){ // adblocker detected, show fallback showFallbackImage(); } </script> </body> </html> 

Ads.js जैसी फ़ाइलों को क्रोम पर कम से कम इन एडब्लॉकर्स द्वारा अवरुद्ध किया जाता है:

  • AdBlock
  • ऐडब्लॉक प्लस
  • एडब्लॉक प्रो

(हां, ये पूरी तरह से अलग ब्राउज़र एक्सटेंशन हैं)

यह इसके साथ काम नहीं करता है:

  • भूतरी (केवल वास्तविक डबलक्लिक / ऐपनेक्स यूआरएल ब्लॉक करें)

कोई सीधा जवाब नहीं है, लेकिन मैं विज्ञापन को लोड किए जाने के पीछे संदेश रखता हूं … बल्कि यह पता लगाने की कोशिश कर रहा था, जब यह विज्ञापन नहीं दिखाया जाएगा।

http://thepcspy.com/read/how_to_block_adblock/

JQuery के साथ:

 function blockAdblockUser() { if ($('.myTestAd').height() == 0) { window.location = 'http://example.com/AdblockNotice.html'; } } $(document).ready(function(){ blockAdblockUser(); }); 

बेशक, आपको AdblockNotice.html के लिए एक लैंडिंग पृष्ठ की आवश्यकता होगी, और .myTestAd वर्ग को आपके वास्तविक विज्ञापन कंटेनर को प्रतिबिंबित करने की आवश्यकता है लेकिन यह काम करना चाहिए

संपादित करें

जैसा कि टीडी_निज़बोयर की सिफारिश की जाती है, एक बेहतर तरीका इसका इस्तेमाल करना है :hidden (या :visible , जैसा मैं नीचे उपयोग करता हूं) चयनकर्ता ताकि display: none भी जाँच न हो:

 function blockAdblockUser() { if ($('.myTestAd').filter(':visible').length == 0) { // All are hidden, or "not visible", so: // Redirect, show dialog, do something... } else if ($('.myTestAd').filter(':hidden').length > 0) { // Maybe a different error if only some are hidden? // Redirect, show dialog, do something... } } 

बेशक, इनमें से दोनों को एक में जोड़ा जा सकता है if ब्लॉक अगर वांछित हो।

ध्यान दें कि visibility: hidden रूप में भी कब्जा नहीं किया जाएगा (जहां लेआउट स्थान रहता है, लेकिन विज्ञापन दृश्यमान नहीं है)। यह जांचने के लिए, एक और फिल्टर का उपयोग किया जा सकता है:

 $('.myTestAd').filter(function fi(){ return $(this).css('visibility') == 'hidden'; }) 

जो आपको विज्ञापन तत्वों की एक सरणी देगा जो "अदृश्य" हैं (सिद्धांत के साथ 0 से अधिक होने के कारण कोई समस्या है)।

कोई अतिरिक्त अनुरोध नहीं कोई बाहरी पुस्तकालय नहीं बस सादे, सरल जावास्क्रिप्ट:

 var adBlockEnabled = false; var testAd = document.createElement('div'); testAd.innerHTML = '&nbsp;'; testAd.className = 'adsbox'; document.body.appendChild(testAd); window.setTimeout(function() { if (testAd.offsetHeight === 0) { adBlockEnabled = true; } testAd.remove(); console.log('AdBlock Enabled? ', adBlockEnabled) }, 100); 

अधिकांश विज्ञापन गतिशील रूप से जावास्क्रिप्ट में लोड किए जाते हैं मैंने यह जानने के लिए आतंक घटना का इस्तेमाल किया है कि विज्ञापन स्क्रिप्ट लोड हो सकती है या नहीं। काम करने के लिए लगता है

GoogleAds के साथ उदाहरण:

 <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" onerror="adBlockFunction();"></script> 

इसका उपयोग अन्य तत्वों पर भी किया जा सकता है यह देखने के लिए कि क्या कोई विज्ञापन अवरोधक सामग्री को अवरुद्ध कर रहा है या नहीं। यह विधि गलत सकारात्मक उत्पन्न कर सकती है अगर दूरस्थ तत्व मौजूद नहीं हैं या नहीं पहुंचा जा सकता है।

यह पता लगाने के लिए कि उपयोगकर्ता विज्ञापनों को अवरुद्ध कर रहा है, आपको बस इतना करना होगा कि विज्ञापन जावास्क्रिप्ट में फ़ंक्शन मिलें और इसके लिए परीक्षण का प्रयास करें इससे कोई फर्क नहीं पड़ता कि वे किस विज्ञापन को ब्लॉक करने के लिए उपयोग कर रहे हैं गूगल ऐडसेंस विज्ञापनों के लिए ऐसा दिखता है:

 if(!window.hasOwnProperty('google_render_ad') || window.google_render_ad === undefined) { //They're blocking ads, display your banner } 

इस विधि को यहां बताया गया है: http://www.metamorphosite.com/detect-web-popup-blocker-software-adblock-spam

मैं जानता हूं कि पहले से ही पर्याप्त उत्तर हैं, लेकिन Google पर इस प्रश्न के बाद से विषय पर "एडब्लॉक का पता लगाने" की खोज के बाद, मैं कुछ अंतर्दृष्टि प्रदान करना चाहता था, यदि आप adsense का उपयोग नहीं कर रहे हैं

विशेष रूप से, इस उदाहरण के साथ आप पता लगा सकते हैं कि फ़ायरफ़ॉक्स एडब्लॉक द्वारा प्रदत्त डिफ़ॉल्ट एडब्लॉक सूची का उपयोग किया जाता है। यह लाभ लेता है कि इस अवरोध सूची में सीएसएस आईडी #bottomAd साथ एक तत्व अवरुद्ध है अगर मैं पृष्ठ में इस तरह के एक तत्व को शामिल करता हूं और इसकी ऊंचाई के लिए परीक्षण करता हूं, तो मुझे पता है कि एडब्लॉकिंग सक्रिय है या नहीं:

 <!-- some code before --> <div id="bottomAd" style="font-size: 2px;">&nbsp;</div> <!-- some code after --> 

बाकी सामान्य जीओ संदिग्ध के माध्यम से किया जाता है:

 $(document).ready( function() { window.setTimeout( function() { var bottomad = $('#bottomAd'); if (bottomad.length == 1) { if (bottomad.height() == 0) { // adblocker active } else { // no adblocker } } }, 1); } 

जैसा कि देखा जा सकता है, मैं 1 setTimeout के कम से कम समय के साथ setTimeout का उपयोग कर रहा हूं। मैंने इसे विभिन्न ब्राउज़रों और अधिकांश समय पर परीक्षण किया है, सीधे ready करने के लिए तत्व की जांच कर रहा है हमेशा 0 लौटाता है; चाहे विज्ञापन ब्लॉगर सक्रिय था या नहीं। मुझे इस बारे में दो विचार हैं: या तो प्रस्तुत करना अभी तक नहीं किया गया था या एडब्लॉक अभी तक किक नहीं हुआ था। मैं आगे की जांच करने के लिए परेशान नहीं किया।

Jquery के साथ मेरा सबसे आसान समाधान है:

 $.ajax({ url: "/scripts/advertisement.js", // this is just an empty js file dataType: "script" }).fail(function () { // redirect or display message here }); 

advertising.js में अभी कुछ भी नहीं है जब कोई विज्ञापन एडब्लॉक का उपयोग करता है, तो वह विफल हो जाता है और फ़ंक्शन को फोन किया जाता है

वे इस तथ्य का उपयोग कर रहे हैं कि Google का विज्ञापन कोड आईडी "iframe" के साथ एक आइफ्रेम बनाता है। इसलिए जब तक आपके पास पहले से उस पेज पर कुछ नहीं है जो उस आईडी के साथ है, यह आपके लिए भी काम करता है।

 <p id="ads"> <script type="text/javascript"><!-- google_ad_client = "their-ad-code-here"; /* 160x600, droite */ google_ad_slot = "their-ad-code-here"; google_ad_width = 160; google_ad_height = 600; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </p> <script type="text/javascript"><!-- if(document.getElementsByTagName("iframe").item(0) == null) { document.write("<div style='width:160px; height:600px; padding-top: 280px; margin-left:5px;border:1px solid #000000; text-align:center; font-family:century gothic, arial, helvetica, sans serif;padding-left:5px;padding-right:5px;'>Advertising seems to be blocked by your browser.<br /><br /><span style='font-size:10px'>Please notice that advertising helps us to host the project.<br /><br />If you find these ads intrusive or inappropriate, please contact me.</span><img src='http://img.hiwab.com/adsense/abp.jpg' alt='Adblock Plus' /></div>"); } --></script> 

मैंने देखा कि पिछले टिप्पणियों का परीक्षण करने के लिए वस्तु के रूप में गूगल ऐडसेंस का इस्तेमाल होता है। कुछ पृष्ठ ऐडसेंस का उपयोग नहीं करते हैं, और ऐडसेंस ब्लॉक का उपयोग परीक्षण के रूप में वास्तव में एक अच्छा विचार नहीं है। क्योंकि ऐडसेंस ब्लॉक आपके एसईओ को नुकसान पहुंचा सकता है यहां बताया गया है कि एडब्लॉकर साधारण अवरुद्ध क्लास द्वारा कैसे पता लगाता है:

एचटीएमएल:

 <div class="ad-placement" id="ablockercheck"></div> <div id="ablockermsg" style="display: none"></div> 

jQuery:

 $(document).ready(function() { if(!$("#ablockercheck").is(":visible")) { $("#ablockermsg").text("Please disable adblocker.").show(); } }); 

"अब्लॉककर चेक" एक आईडी है जो एडब्लॉकर ब्लॉक है। तो यह जांचते हुए कि क्या यह दिखाई दे रहा है, आप पता लगा सकते हैं कि एडब्लॉकर चालू है या नहीं।

एडब्लॉक ऐडसेंस (इत्यादि) जावास्क्रिप्ट फाइलों को लोड करने को अवरोधित करता है। इसलिए, यदि आप ऐडसेंस विज्ञापनों के एसिंक्रोनस संस्करण का उपयोग कर रहे हैं तो आप यह जांच सकते हैं कि adsbygoogle एक Array । एसिंक्रोनस स्क्रिप्ट के बाद से यह कुछ सेकंड के बाद चेक किया जाना चाहिए … अतुल्यकालिक यहाँ एक मोटा रूपरेखा है :

 window.setTimeout(function(){ if(adsbygoogle instanceof Array) { // adsbygoogle.js did not execute; probably blocked by an ad blocker } else { // adsbygoogle.js executed } }, 2000); 

स्पष्ट करने के लिए, यहां ऐडसेंस अतुल्यकालिक विज्ञापन कोड की एक उदाहरण है:

 <!-- this can go anywhere --> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- this is where the ads display --> <ins class="adsbygoogle" ...></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> 

ध्यान दें कि adsbygoogle एक अर्रे के रूप में आरंभ किया गया है। adsbygoogle.js लाइब्रेरी इस सरणी को Object {push: ...} में बदलती है जब यह कार्यान्वित होती है। निश्चित समय के बाद चर के प्रकार की जांच करना आपको बता सकता है कि स्क्रिप्ट भरी हुई है या नहीं।

बस अपनी साइट पर छोटी सी स्क्रिप्ट जोड़ें:

 var isAdsDisplayed = true; 

नाम के साथ adsbygoogle.js

फिर निम्नलिखित करें:

 <script src="/js/adsbygoogle.js"></script> <script> if(window.isAdsDisplayed === undefined ) { // AdBlock is enabled. Show message or track custom data here } </script> 

इस समाधान को यहाँ मिला

इस दृष्टिकोण का उपयोग मैं अपनी साइट पर कर सकता हूं, शायद आप इसे उपयोगी पाएंगे मेरी राय में, यह सबसे सरल समाधान है

डेवलपर कंसोल में किसी अवरुद्ध विज्ञापन के इन चयनकर्ताओं का निरीक्षण करके, AdBlocker विशिष्ट वर्गों और HTML तत्वों को अवरुद्ध करता है (वे सभी सूचीबद्ध होते हैं) आप देख सकते हैं कि कौन से तत्व हमेशा अवरुद्ध हो जाएंगे

उदाहरण के लिए, बस इस सवाल का पेज स्टैक्सहोवरफ्लो पर निरीक्षण करें और आपको अवरुद्ध विज्ञापन का गुच्छा दिखाई देगा।

उदाहरण के लिए, bottom-ad वर्ग के किसी भी तत्व को स्वतः अवरुद्ध कर दिया जाता है।

  1. मैंने bottom-ad वर्ग के साथ एक गैर-रिक्त div तत्व बनाया है: <div class="bottom-ad" style="width: 1px; height: 1px;">HI</div>
  2. पृष्ठ लोड होने के बाद जांचें कि यह तत्व छिपा हुआ है या नहीं। मैं jQuery का उपयोग किया है, लेकिन जावास्क्रिप्ट का उपयोग करने के लिए स्वतंत्र महसूस कर रहा हूं: $('.bottom-ad').css('display') == "none" या $('.bottom-ad').is(':visible') का उपयोग करके और भी बेहतर है $('.bottom-ad').is(':visible')

यदि मान true , तो AdBlocker सक्रिय है।

आपको एक अतिरिक्त HTTP अनुरोध की आवश्यकता नहीं है, आप बस नकली जोड़ की ऊंचाई की गणना कर सकते हैं।

वैसे, यहां उन तत्वों से मेल खाती एक पूरी सूची है , जो एडब्लॉकर्स प्रतिपादन से बचते हैं।

 window.adBlockRunning = function() { return (getComputedStyle(document.getElementById("detect"))["display"] == "none") ? true : false; }() console.log(window.adBlockRunning); 
 #detect { height: 1px; width: 1px; position: absolute; left: -999em; top: -999em } 
 <div id="detect" class="ads ad adsbox doubleclick ad-placement carbon-ads"></div> 

मेरी सलाह है: ऐसा मत करो!

किसी भी परिस्थिति में आप लोगों को "अपराधियों" के रूप में मानते हैं, उन्हें परिणामस्वरूप वापस लड़ना पड़ता है

यहाँ मेरा प्रस्ताव है

टेक्स्ट के शीर्ष पर पेज के शीर्ष पर एक छोटे से विवादास्पद संदेश दें (चाहे विज्ञापनों को अवरुद्ध किया जाए या नहीं) I *totally* respect your right to block ads और अन्य पेज / पॉप-अप का एक लिंक हकदार और Read more ...

दूसरे पृष्ठ पर, यह स्पष्ट करें कि आप समझते हैं कि यह उनका कंप्यूटर है और वे विज्ञापन अवरोधन का उपयोग करने के लिए स्वतंत्र हैं।

इसके साथ ही एक गैर-अभिक्रियात्मक तरीके से यह स्पष्ट कर दें कि इन ब्लॉकर्स के उपयोग से आप महान सामग्री (क्यों विस्तार में समझा जा सकता है) के लिए और अधिक कठिन बना देता है, और जब आप अपनी साइट पर विज्ञापन अवरुद्ध नहीं करना चाहते हैं, यह पूरी तरह से उनके निर्णय है अवरुद्ध करना बंद करने के सकारात्मक पर ध्यान दें।

जो लोग विज्ञापनों के जोरदार विरोध करते हैं, वे इस पर ध्यान नहीं देंगे, लेकिन आप उन्हें किसी भी तरह से समझाने की संभावना नहीं रखते। जो उदासीन हैं, वे आपकी अपील से विचलित हो सकते हैं क्योंकि आप पूरे नहीं कर रहे हैं "मुझे अपना रास्ता मिल जाने दो या मैं अपनी गेंद ले जाऊंगा और घर जाना" जो ईमानदारी से पांच साल के बच्चों के अनन्य डोमेन होना चाहिए।

याद रखें, किसी ने भी अपने सिर पर बंदूक नहीं रखी और नेट पर अपना सामान डालने के लिए मजबूर किया। सम्मान के साथ अपने पाठकों / प्रयोक्ताओं के साथ व्यवहार करें और आप पाएंगे कि उनमें से एक अच्छी संख्या में प्रतिपूर्ति होगी।

यदि नए ऐडसेंस कोड का उपयोग कर रहे हैं, तो आप सामग्री या सीएसएस जांच का सहारा लेने के साथ एक आसान जांच कर सकते हैं।

अपने विज्ञापनों को अपने मार्कअप में सामान्य रूप में रखें:

 <ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-######" data-ad-slot="#######" data-ad-format="auto"></ins> <script>(adsbygoogle = window.adsbygoogle || []).push({});</script> 

फिर आप अपने पृष्ठ के निचले भाग में ऐडसेंस कोड को कॉल करते हैं (ध्यान दें adsbygoogle.js स्क्रिप्ट को कॉल करते समय "async" ध्वज का उपयोग करें):

 <script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> 

फिर नीचे दिए गए कोड का यह छोटा स्निपेट जोड़ें:

 <script> if (!adsbygoogle.loaded) { // do something to alert the user } </script> 

ऐडसेंस हमेशा बना रहता है / विज्ञापनों के द्वारा ध्वज विज्ञापनों को true बनाता true जब विज्ञापनों को लोड किया जाता है, तो आप चेक को कुछ सेकेंड तक देरी करने के लिए setTimeout फ़ंक्शन में चेक डाल सकते हैं।

सुरक्षित तरीके से अपने विज्ञापनों को <div> अंदर लपेट करना और ऊंचाई की जांच करना है

 <div id="check-ab"> /* your ads code */ </div> setTimeout(function(){ if(document.getElementById("check-ab").offsetHeight === 0){ console.log("ads blocked"); } else{ console.log("ads running"); } }, 100); 

यह एडब्लॉक प्लस और ब्लूहेल फायरवाल के साथ काम करता है।

एक एडब्लॉक है या नहीं, यह जांचने के लिए एक प्रभावी तरीका: केवल जांचें कि क्या Google विज्ञापन के यूआरएल को ट्रिगर करने के प्रयास में एडब्लॉक सक्षम है। यदि हाँ, तो callback_has_adblock चलाएं, अगर नहीं तो कॉलबैक_नो_एडब्लॉक चलाएं। इस समाधान पर एक अनुरोध अधिक होता है लेकिन कम से कम यह काम करता है:

 var hasAdBlock = function (callback_has_adblock, callback_no_adblock) { $.getScript( "http://pagead2.googlesyndication.com/pagead/show_ads.js" ) .done(function( script, textStatus ) { callback_no_adblock(); }) .fail(function( jqxhr, settings, exception ) { callback_has_adblock(); }); }; 

यह समाधान सभी प्रकार के विज्ञापनों के लिए काम करता है, न कि केवल गूगल ऐडसेंस

इस प्रश्न की उम्र के बावजूद, मैंने हाल ही में यह बहुत ही उपयोगी पाया है और इसलिए यह केवल मान सकते हैं कि अभी भी इसे अभी भी देख रहे हैं। यहां और कहीं और देखने के बाद मैंने अनुमान लगाया कि मुख्य तीन क्लाइंट पक्ष एक विज्ञापन अवरोधक का अप्रत्यक्ष रूप से पता लगाने के लिए चेक किए गए ब्लॉक / img , अवरुद्ध iframe और अवरुद्ध संसाधन (जावास्क्रिप्ट फाइल) की जांच कर रहे थे।

हो सकता है कि यह शीर्ष या पागल हो गया हो लेकिन यह विज्ञापन अवरोधक प्रणालियों के लिए शामिल किया गया है जो चयन के केवल एक या दो को ब्लॉक करता है और इसलिए संभवतः कवर नहीं किया गया हो सकता था आपने केवल एक चेक किया था

पृष्ठ पर आप चेक जोड़ रहे हैं: (मैं jQuery का उपयोग कर रहा हूँ)

 <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="advertisement.js"></script> <script type="text/javascript" src="abds.js"></script> 

और पृष्ठ पर कहीं और भी जोड़ें:

 <div id="myTestAd"><img src="http://img.hiwab.com/adsense/ffffff.png&text=Advert" /></div> 

मैंने एक ऐप का प्रयोग एक चारा के नाम के साथ-साथ बाहरी रूप से होस्ट की गई छवि "टेक्स्ट" विज्ञापन के साथ और ऐडसेंस द्वारा उपयोग किए गए आयाम में (placehold.it के लिए धन्यवाद!)

advertisement.js आपको दस्तावेज़ में कुछ जोड़ना चाहिए जिसे हम बाद में जांच सकते हैं। यद्यपि ऐसा लगता है कि आप पहले की तरह ही कर रहे हैं, आप वास्तव में फाइल ( advertisement.js ) को खुद ही लोड किए जा रहे हैं, आउटपुट नहीं देख रहे हैं।

 $(document).ready( { $("body").append("<div id=\"myTestAd2\">check</div>"); }); 

और फिर विज्ञापन अवरोधक पहचान स्क्रिप्ट जो सब कुछ जोड़ती है

 $(document).ready(function() { var ifr = '<iframe id="adServer" src="http://ads.google.com/adserver/adlogger_tracker.php" width="300" height="300"></iframe>'; $("body").append(ifr); }); $(window).on("load",function() { var atb = $("#myTestAd"); var atb2= $("#myTestAd2"); var ifr = $("#adServer"); setTimeout(function() { if( (atb.height()==0) || (atb.filter(":visible").length==0) || (atb.filter(":hidden").length>0) || (atb.is("hidden")) || (atb.css("visibility")=="hidden") || (atb.css("display")=="none") || (atb2.html()!="check") || (ifr.height()!=300) || (ifr.width()!=300) ) { alert("You're using ad blocker you normal person, you!"); } },500); }); 

जब दस्तावेज़ तैयार हो जाता है , अर्थात् मार्कअप लोड होता है, तो हम दस्तावेज़ में iframe भी जोड़ते हैं। तब, जब विंडो भरी हुई है , यानी सामग्री सहित। छवियां आदि भरी हुई हैं, हम जांचते हैं:

  • पहले टेस्ट डिवेल के आयाम और दृश्यता
  • कि दूसरी टेस्ट advertimsent.js की सामग्री "चेक" है, क्योंकि यह जरूर हो गया होता अगर advertimsent.js अवरुद्ध नहीं होता
  • आइफ्रेम के आयाम (और मैं दृश्यता को समझता हूं, जैसा कि छिपी हुई वस्तु की ऊंचाई या चौड़ाई नहीं है?)

और शैलियों:

 div#myTestAd, iframe#adServer { display: block; position: absolute; left: -9999px; top: -9999px; } div#myTestAd2 { display: none; } 

उम्मीद है की यह मदद करेगा

मुझे पता है कि यह पहले से ही उत्तर दिया गया है, लेकिन मैंने सुझाए गए नमूना साइट को देखा, और मुझे लगता है कि वे ऐसा करते हैं:

 <script type="text/javascript"> if(document.getElementsByTagName("iframe").item(0) == null) { document.write("<div style="width: 160px; height: 600px; padding-top: 280px; margin-left: 5px; border: 1px solid #666666; color: #FFF; background-color: #666; text-align:center; font-family: Maven Pro, century gothic, arial, helvetica, sans-serif; padding-left: 5px; padding-right: 5px; border-radius: 7px; font-size: 18px;">Advertising seems to be blocked by your browser.<br><br><span style="font-size: 12px;">Please notice that advertising helps us to host the project.<br><br>If you find these ads intrusive or inappropriate, please contact me.</span><br><img src="http://img.hiwab.com/adsense/abp.png" alt="Adblock Plus"></div>"); }; </script> 

टाइमआउट और डॉम सूँघने की कोई ज़रूरत नहीं है बस लोकप्रिय विज्ञापन नेटवर्क से एक स्क्रिप्ट लोड करने का प्रयास करें, और देखें कि क्या विज्ञापन अवरोधक HTTP अनुरोध को रोकता है।

 /** * Attempt to load a script from a popular ad network. Ad blockers will intercept the HTTP request. * * @param {string} url * @param {Function} cb */ function detectAdBlockerAsync(url, cb){ var script = document.createElement('script'); script.onerror = function(){ script.onerror = null; document.body.removeChild(script); cb(); } script.src = url; document.body.appendChild(script); } detectAdBlockerAsync('http://ads.pubmatic.com/AdServer/js/gshowad.js', function(){ document.body.style.background = '#c00'; }); 

बस इसे सुलझाने के लिए अपना खुद का "प्लगइन" बनाया और यह वास्तव में अच्छी तरह से काम करता है:

एड बड्डी + जेएसबुड्डी:

एडीबीड्डी जे.एस.बद्दी गिटहब

मैंने मोबाइल संगतता और अन्य चीजों के बीच जेएसब्लॉकिंग का पता लगाया … (एक उपरिशायी की तरह जो उपयोगकर्ता को विज्ञापन ब्लॉकिंग / जेएसब्लॉकिंग सॉफ्टवेयर को अक्षम करने के लिए कह रहे हैं); इसके अलावा यह उत्तरदायी अनुकूल बनाया

इसे कोफ़ेवाईवेयर लाइसेंस के तहत खोल दिया गया है

 <script src="http://code.jquery.com/jquery-latest.js"></script> <script>var adb=true;</script> <script src="./getbanner.cfm?"></script> <script> $(document).ready(function(){if(adb)alert('AdBlock!');}); </script> 

और getbanner.cfm फ़ाइल में:

 adb = false; 

मुझे लगता है कि एडब्लॉक का पता लगाने का सबसे आसान तरीका है

इसी से मेरा काम बना है:

 function isAdBlocked() { return (typeof(window.google_jobrunner) === "undefined") ? true : false; } $(document).ready(function(){ if(isAdBlocked()) { alert('YU NO LIKE ADS?'); } }); 

timing's जवाब अच्छा लगता है लेकिन कोई और काम नहीं कर रहा है, इसलिए मैंने 'विज्ञापन' से 'ऐडसेंस' पर जेएस फाइल का नाम अपडेट कर लिया है और यह जादू की तरह वापस काम कर रहा है!

यहां कोड है, शायद यह किसी की सहायता करे:

 <html> <head> <script src="/adsense.js"></script> </head> <body> <script> if( window.adblockDetecter === undefined ){ // Do anithing, adblocker detected! alert('Adblocker Detected!');} </script> </body> </html> 

जेएस फ़ाइल में सिर्फ यह रेखा var adblockDetecter = true; : var adblockDetecter = true;

अब एडब्लॉक डिटेक्टर नामक एक सरल जेएस स्क्रिप्ट का उपयोग करने के लिए यह एक बेहतर तरीका है
इसका उपयोग कैसे करें:
इसे अपने <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 उपयोगकर्ताओं को संदेश प्रदर्शित करना चाहते हैं:

 <div id="ab-message" style="display: none">Your message here!</div> 

मूल रूप से इसे छिपाने के लिए इनलाइन शैली को नोट करें (बेशक, आप यह अपनी सीएसएस फ़ाइल से भी कर सकते हैं)
यह भी ध्यान रखें कि यह 500 एमएमएस लेता है, क्योंकि यह एडब्लॉकर को अपनी बात करने के लिए इंतजार करना पड़ता है या यह काम नहीं करेगा।

यह स्क्रिप्ट कैसे काम करता है इसका एक छोटा सा स्पष्टीकरण

सबसे पहले, यह एक अनियमित जनित लिंक के स्रोत के साथ एक आइफ्रेम संलग्न करता है। (यह बेतरतीब ढंग से उत्पन्न होता है क्योंकि कुछ ऐडब्लॉक स्मार्ट होते हैं, कुछ बिंदु पर, उन्हें पता है कि एक लिंक नकली है)।
फिर यह iframe पर कई जांच चलाता है (यदि इसे सफलतापूर्वक लोड किया गया है या इसकी शैली संशोधित की गई है)। यदि इन परीक्षणों में से कोई एक सत्य है, तो यह उपयोगकर्ताओं को एडब्लॉक करने के लिए ab-message तत्व प्रदर्शित करता है।

यह स्क्रिप्ट सबसे अधिक (यदि सभी नहीं) विज्ञापन ब्लॉकर्स के लिए काम करता है

अतिरिक्त

कोई बात नहीं, वास्तव में, सिर्फ एक सार बना सकता है, लेकिन इसके बजाय मैंने एक गिथूब प्रोजेक्ट बनाया है, लेकिन फिर भी, इसे जांचें और उसे तारांकित करें अगर यह आपकी सहायता करता है
abDetector: सरल वेनिला जावास्क्रिप्ट AdBlock डिटेक्टर।
का आनंद लें।

आप इसे चेक कर सकते हैं, यह पता लगाने में मददगार हो सकता है- adblocker

यह समय के जवाब का एक कार्यान्वयन

सिर टैग में किसी भी स्क्रिप्ट से पहले इसे जोड़ें:

 <head> <title></title> <meta/> <!--adBlocker detection code - START--> <script src="//adblocker.fortiapp.com/ads.js"></script> <script> (function (i, o, g, r) { i[o] = (typeof i[o] == typeof undefined) ? g : r })(window, 'adblocker', true, false); </script> <!--adBlocker detection code - END--> // Other scripts </head> 

इसके बाद बाद में इसका प्रयोग करें:

 if (adblocker) { // the add blocker is enabled }else{ // ad blocker is not enabled } 

I understand your tension and you can check if element has been created by script or element is hidden. And if we speak about ad-blocking you can count only on the element visibility, not on the element presence.

Element created with third-party script will never be present, that if script is not reachable at the moment (DNS error, remote web server error, offline web page preload, etc), and you'll always get false positive.

All other answers with checks are correct, but keep this in mind.

I'm a bit late to the party here but here's the simplest solution I know for the old AdSense code with jQuery:

 $ads = $("ins"); if ($ads.length == 0) { // Replacement code about you needing ad income } 

And in plain JavaScript:

 $ads = document.getElementsByTagName("ins"); if ($ads.length == 0) { // Replacement code about you needing ad income } 

For $ads you can use any selector that you know is consistent with the ad being generated. Eg for the new AdSense code you can use $("iframe#google_ads_frame1") .

If you have problem with adblock blocking new tab in browser you can do something like this:

 $('a').click(function(e){ // change $('a') into more specific var w = window.open(this.href, '_blank'); setTimeout(function(){ if(w.closed){ alert('Adblock detected!'); } }, 300); // if you can close new tab in less than 0.3 sec you're very fast ;) e.preventDefault(); // return false if you like }); 

This code is ONLY useful IF you don't want to block entire site AND just tell users why their browser tabs are closed 😉