¿Cómo detectar Adblock en mi sitio web?

Me gustaría poder detectar si el usuario está usando un software de locking de anuncios cuando visita mi sitio web. Si lo están usando, quiero mostrar un mensaje pidiéndoles que lo desactive para poder apoyar el proyecto, como este sitio web .

Si ingresa a ese sitio y su navegador tiene habilitado algún tipo de software adblock, entonces el sitio en lugar de mostrar los anuncios reales muestra una pequeña pancarta que indica a los usuarios que los ingresos publicitarios se utilizan para alojar el proyecto y deberían considerar desactivar Adblock. .

Quiero hacer eso en mi sitio web, estoy usando anuncios de Adsense en él, ¿cómo puedo hacer eso?

Mi solución no es específica para una determinada red publicitaria y es muy liviana. Lo he estado ejecutando en producción por unos años. AdBlock bloquea todas las URL que contienen la palabra “anuncios”. Entonces esto es lo que hice:

Agregué un pequeño archivo js a mi webroot con el nombre ads.js

Esta es la única línea de código en ese archivo

 var canRunAds = true; 

Luego, en algún lugar de mi página:

         

Archivos como ads.js están bloqueados por al menos estos adblockers en Chrome:

  • AdBlock
  • Adblock Plus
  • Adblock Pro

(Sí, estas son extensiones de navegador completamente diferentes)

Esto no funciona con:

  • Ghostery (solo bloquea las URL reales de DoubleClick / appnexus)

No es una respuesta directa, pero pondría el mensaje detrás del anuncio para que se cargue … en lugar de tratar de detectarlo, se mostraría cuando el anuncio no lo haga.

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

Con jQuery:

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

Por supuesto, necesitaría tener una página de destino para AdblockNotice.html, y la clase .myTestAd debe reflejar sus contenedores de anuncios reales. Pero esto debería funcionar

EDITAR

Como TD_Nijboer recomienda, una mejor manera es usar el selector :hidden (o :visible , como uso a continuación) para que la display: none también esté marcada:

 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... } } 

Por supuesto, ambos podrían combinarse en un bloque si lo desea.

Tenga en cuenta que visibility: hidden tampoco será capturado (donde permanece el espacio de diseño, pero el anuncio no está visible). Para verificar eso, se puede usar otro filtro:

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

Lo que le dará una serie de elementos publicitarios que son “invisibles” (en cualquier caso, que un valor superior a 0 sea ​​un problema).

No hay solicitudes adicionales. Sin bibliotecas externas Simplemente simple, JavaScript:

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

La mayoría de los anuncios se cargan dinámicamente en javascript. Acabo de utilizar el evento onerror para detectar si el script publicitario podría cargarse o no. Parece funcionar.

Ejemplo con GoogleAds:

  

Esto también se puede usar en otros elementos para ver si un bloqueador de anuncios está bloqueando el contenido. Este método puede producir falsos positivos si los elementos remotos no existen o no se pueden alcanzar.

Para detectar si el usuario está bloqueando anuncios, todo lo que tiene que hacer es buscar una función en el anuncio de JavaScript e intentar probarlo. No importa qué método estén usando para bloquear el anuncio. Esto es lo que parece para los anuncios de Google Adsense:

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

Este método se describe aquí: http://www.metamorphosite.com/detect-web-popup-blocker-software-adblock-spam

Mi solución más fácil con jquery es:

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

advertisement.JS no contiene nada. Cuando alguien usa adblock, falla y se llama a la función.

Sé que ya hay suficientes respuestas, pero como esta pregunta surge en Google buscó “detectar Adblock” en el tema, quería brindar alguna información en caso de que no esté usando AdSense .

Específicamente, con este ejemplo puede detectar si se usa la lista Adblock predeterminada proporcionada por Firefox Adblock. Se aprovecha que en esta lista de locking hay un elemento bloqueado con el ID de CSS #bottomAd . Si incluyo dicho elemento en la página y pruebo su altura, sé si el locking de anuncios está activo o no:

  
 

El rest se realiza a través del sospechoso habitual de jQuery:

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

Como se puede ver, estoy usando setTimeout con al menos un tiempo de espera de 1 ms. He probado esto en varios navegadores y la mayoría de las veces, verificando directamente para el elemento en ready siempre devuelto 0; no importa si el bloqueador de anuncios estaba activo o no. Estaba teniendo dos ideas sobre esto: o bien la renderización aún no se había realizado o Adblock aún no lo había hecho. No me molesté en investigar más.

Mi consejo es: ¡no lo hagas!

Cualquier escenario en el que tratas a las personas como “malhechores” va a resultar en que ellos se pelearán.

Aquí está mi propuesta.

Ponga un pequeño mensaje discreto en la parte superior de la página (independientemente de si los anuncios están siendo bloqueados) con el texto I *totally* respect your right to block ads y un enlace a otra página / ventana emergente titulada Read more ...

En la otra página, deje en claro que entiende que es su computadora y que son libres de usar locking de anuncios.

También deje en claro de forma no acusatoria que el uso de estos bloqueadores hace que sea más difícil para usted entregar un excelente contenido (explicando por qué en detalle) y que, si bien prefiere que el locking de anuncios no suceda en su sitio, es totalmente su decisión. Concéntrese en los aspectos positivos de desactivar el locking.

Aquellos que se oponen con vehemencia a los anuncios ignorarán esto, pero nunca tuvieron la oportunidad de convencerlos de todos modos. Aquellos que son indiferentes pueden ser influenciados por su apelación ya que no están haciendo todo lo que “honestamente debería ser el dominio exclusivo de niños de cinco años”. “Déjenme seguir mi camino o me llevaré la pelota e irme a casa”.

Recuerda, nadie te apuntó con una pistola y te obligó a poner tus cosas en la red. Trate a sus lectores / usuarios con respeto y probablemente encontrará que un buen número de ellos corresponderá.

Utilizan el hecho de que el código de anuncios de Google crea un marco flotante con el id “iframe”. Por lo tanto, siempre y cuando no tenga algo en su página con esa ID, esto también funcionaría para usted.

 

Noté que los comentarios anteriores usan google adsense como objeto para probar. Algunas páginas no usan adsense, y usar el locking de adsense como prueba no es realmente una buena idea. Porque el locking de AdSense puede dañar su SEO. Aquí está el ejemplo de cómo detecto por adblocker clase bloqueada simple:

Html:

 

Jquery:

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

“ablockercheck” es una ID que bloquea adblocker. Por lo tanto, si está visible, puede detectar si Adblocker está activado.

AdBlock parece bloquear la carga de archivos JavaScript de AdSense (etc.). Por lo tanto, si está utilizando una versión asíncrona de los anuncios de AdSense, puede verificar si adsbygoogle es una Array . Esto debe verificarse después de unos segundos ya que el script asincrónico es … asincrónico. Aquí hay un bosquejo aproximado :

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

Para aclarar, aquí hay un ejemplo de cómo se ve el código de anuncios asincrónicos de AdSense:

      

Tenga en cuenta que adsbygoogle se inicializa como una matriz. La biblioteca adsbygoogle.js cambia esta matriz en Object {push: ...} cuando se ejecuta. Verificar el tipo de variable después de un cierto tiempo puede indicarle si el script se cargó.

Solo agrega pequeñas secuencias de comandos en tu sitio:

 var isAdsDisplayed = true; 

Con el nombre adsbygoogle.js

Entonces haz lo siguiente:

   

Encontré esta solución aquí

Este enfoque que uso en mi sitio, tal vez lo encuentre útil. En mi opinión, es la solución más simple .

AdBlocker bloquea clases específicas y elementos html, al inspeccionar estos selectores de cualquier anuncio bloqueado en la consola de desarrollador (todos aparecen en la lista), puede ver qué elementos estarán siempre bloqueados.

Por ejemplo, simplemente inspecciona esta página de preguntas en stackoverflow y verás un montón de anuncios bloqueados.

Por ejemplo, cualquier elemento con clase de bottom-ad se bloquea automáticamente.

  1. Creé un elemento div no vacío con bottom-ad class:
    HI

  2. Después de la carga de la página solo verifica si este elemento está oculto. Usé jQuery, pero puede usar javascript: $('.bottom-ad').css('display') == "none" o incluso mejor usando $('.bottom-ad').is(':visible')

Si el valor es true , entonces AdBlocker está activo.

No necesita una solicitud HTTP adicional, simplemente puede calcular la altura de un complemento falso.

Por cierto, aquí hay una lista completa que combina los elementos que adblockers evitan renderizar.

 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 } 
 

la manera segura es envolver sus anuncios dentro de

y verificar la altura

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

funciona con adblock plus y bluehell firewall.

Una forma eficiente de comprobar si hay un bloque de anuncios: simplemente compruebe si hay anuncios habilitados al intentar activar la URL de los anuncios de Google. Si es así, ejecuta callback_has_adblock, si no, ejecuta callback_no_adblock. Esta solución cuesta una solicitud más, pero al menos funciona:

 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(); }); }; 

Esta solución funciona para todo tipo de anuncios, no solo google adsense.

Si utiliza el nuevo código de AdSense, puede hacer una verificación sencilla, sin recurrir a contenido o cheques CSS.

Coloque sus anuncios de forma normal en su marcado:

   

A continuación, llame al código de AdSense en la parte inferior de la página (tenga en cuenta que no utilice el indicador "async" cuando llame al script adsbygoogle.js ):

  

A continuación, agregue este pequeño snippit de código a continuación que:

  

AdSense siempre crea / establece el adsbygoogle.loaded en true cuando se cargan los anuncios. Puede colocar el control en una función setTimeout para retrasar el control en unos segundos.

A pesar de la antigüedad de esta pregunta, recientemente la encontré muy útil y, por lo tanto, solo puedo suponer que hay otros que todavía la ven. Después de mirar aquí y en otros lugares, supuse que los tres principales controles del lado del cliente para detectar indirectamente un bloqueador de anuncios debían verificar la presencia de div / img bloqueados, iframe bloqueados y recursos bloqueados (archivos javascript).

Quizás sea exagerado o paranoico, pero cubre los sistemas de locking de anuncios que bloquean solo uno o dos de la selección y, por lo tanto, es posible que no se hayan cubierto si solo hubieras realizado el único control.

En la página que está ejecutando los controles, agregue: (Estoy usando jQuery)

    

y agregue lo siguiente en cualquier otro lugar en la página:

 

Utilicé un div con un nombre de cebo, así como una imagen alojada externamente con el texto “Anuncio” y en las dimensiones utilizadas por AdSense (¡gracias a placehold.it!).

En public.js debe agregar algo al documento que podemos verificar más adelante. Aunque parece que estás haciendo lo mismo que antes, en realidad estás buscando el archivo ( advertisement.js ) que se está cargando, no el resultado.

 $(document).ready( { $("body").append("
check
"); });

Y luego el script de detección de bloqueador de publicidad que combina todo

 $(document).ready(function() { var ifr = ''; $("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); }); 

Cuando el documento está listo , es decir, el marcado está cargado, también agregamos el iframe al documento. Luego, cuando se carga la ventana, es decir, el contenido incl. Se cargan las imágenes, comprobamos:

  • Las dimensiones y la visibilidad de la primera prueba div.
  • Que el contenido de la segunda prueba div es “verificar”, como lo habría sido si el advertimsent.js no estuviera bloqueado.
  • Las dimensiones (y supongo que la visibilidad, como un objeto oculto no tiene alto o ancho?) Del iframe

Y los estilos:

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

Espero que esto ayude

Sé que esto ya está respondido, pero miré el sitio de muestra sugerido, y veo que lo hacen así:

  

No hay necesidad de tiempos de espera y olfateo DOM. Simplemente intente cargar una secuencia de comandos de redes publicitarias populares y vea si el bloqueador de anuncios ha interceptado la solicitud 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'; }); 

Acabo de crear mi propio “complemento” para resolver esto y funciona muy bien:

adBuddy + jsBuddy:

ADBuddy JSBuddy GitHub

Agregué compatibilidad móvil y detección jsBlocking entre otras cosas … (Como una superposición que se muestra a los usuarios pidiéndoles que desactiven el software adBlocking / jsBlocking ); También lo hizo receptivo amigable.

Se abre de acuerdo con la licencia de Coffeeware .

     

y en el archivo getbanner.cfm:

 adb = false; 

Creo que es la manera más fácil de detectar Adblock.

Esto es lo que funcionó para mí:

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

timing's respuesta timing's está bien pensada pero no funciona más, así que actualicé el nombre del archivo js a ‘adsense’ de ‘ads’ y está funcionando como un amuleto.

Aquí está el código, quizás esto ayude a alguien:

         

En el archivo Js ponga solo esta línea: var adblockDetecter = true;

Ahora hay una mejor manera de hacerlo con un simple script JS llamado AdBlock Detector
He aquí cómo usarlo:
Agregue esto a su sección :

 `

Ahora puede usar el id. De ab-message donde desee mostrar un mensaje a los usuarios de AdBlock:

  

Tenga en cuenta el estilo en línea agregado para ocultarlo originalmente (por supuesto, también puede hacerlo desde su propio archivo CSS).
También tenga en cuenta que tarda 500 ms, eso es porque tiene que esperar a que el bloqueador de anuncios haga lo suyo o no funcionará.

Una pequeña explicación de cómo funciona este script

Primero, agrega un iframe con una fuente de un enlace generado aleatoriamente. (Se genera aleatoriamente porque algunos bloques de anuncios son inteligentes, en algún momento, se dan cuenta de que un enlace es falso).
Luego ejecuta múltiples comprobaciones en ese iframe (si fue cargado con éxito o si su estilo fue modificado). Si una de estas pruebas es verdadera, entonces muestra el elemento ab-message para adblock users.

Este script funciona para la mayoría (si no para todos) de los bloqueadores de anuncios.

EXTRA

No tiene sentido, realmente, podría haber creado una esencia, sino que creé un proyecto de Github, pero aún así, échale un vistazo y échale un vistazo si te ayudó.
abDetector: Detector AdBlock de JavaScript simple y vanidoso.
Disfrutar.

You can check this out it might help detect-adblocker

Its an implementation of timing answer

Add this before any script in the head tag:

        // Other scripts  

Then later use it:

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

Run this with adblock on and Paste this in your page-footer before the close of the tag on your page.

 
<2d 5F="Uj1J=.9;" 5M="Uj1J=1;" 1k="\'+t()+\'" j="2e:2j;H-1e:\'+Z+\'1M;H-1j:1v, 1w, 1i-1l; H-1N:2o;2s-54:2q;1B:1b;55-1c:\'+W+\';1c:\'+g+\';1B-17:2b;1B-2w:2b;13:60%;R:2c;RV:1b;R-1A:1b;" 5p="D.2D.6A();">\'+s+\'\'}}})();D.2t=C(e,t){qn=6v.6w,i=D.6q,a=n(),o,r=C(){n()-a

|style|document

var

if||Math|function|window||length|return|font||body|random

floor|EikYcPAgeLis|String||margin|else|fromCharCode|this|top||charAt

|decode||width|charCodeAt||cssText|left||important|while|10px|color|createElement|size|appendChild|addEventListener|position|sans|family|id|serif|text|thisurl|5000px|align|center|0px|128|height|c2|Helvetica|geneva|px|DIV|zyhKwkzXqE|bottom|padding|replace|absolute|getElementById|innerHTML|JwWlDOfHHZ|src|indexOf|opacity|display|30px|pt|weight|spimg|href|visibility|substr|for|Image|block|load|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|onerror|clientHeight|setAttribute||clientWidth||documentElement|zIndex||new|onload|1000|mXZWAWPhDt|babasbmsgx|60px|auto|div|cursor|c3|none|banner_ad|ZExTcInByX|pointer|jpg|10000|blocker|ad|300|childNodes|15px|fixed|border|LWzjLrdKIW|wukVDWmHGV|DGAbzCJMei|right|KoGbDZZBdI|ranAlready|GhxORUYrSp|sessionStorage|babn|getElementsByTagName|location|type|224|backgroundColor|hidden|marginLeft|DOMContentLoaded|complete|onreadystatechange|attachEvent|h3|readyState|try|doScroll|h1|zoom|removeEventListener|catch|detachEvent|cGFydG5lcmFkcy55c20ueWFob28uY29t|kxrotXXdJo|5em|isNaN

visible|YueVFIKLqs|640|ZmF2aWNvbi5pY28|innerWidth|YWR2ZXJ0aXNpbmcuYW9sLmNvbQ|an|using|re|YWdvZGEubmV0L2Jhbm5lcnM|you|like|It|looks|adb8ff|Welcome|YS5saXZlc3BvcnRtZWRpYS5ldQ|FFFFFF|c3BvbnNvcmVkX2xpbms|okay|EEEEEE|777777|That|YWQuZm94bmV0d29ya3MuY29t|Who|understand|styleSheets|kcolbdakcolb|moc|in|me|Let|clear|YWRuLmViYXkuY29t|Z29vZ2xlX2Fk|my|disabled|have|awesome|doesn|YWQubWFpbC5ydQ|anVpY3lhZHMuY29t|site|making|keep|can|script|we|income|advertising|without|But|b3V0YnJhaW4tcGFpZA|QWRCb3gxNjA|YWRzZW5zZQ|191|QWQzMDB4MjUw|QWQzMDB4MTQ1|YWQtY29udGFpbmVyLTI|YWQtY29udGFpbmVyLTE|YWQtY29udGFpbmVy|YWQtZm9vdGVy|YWQtbGI|YWQtbGFiZWw|YWQtaW5uZXI|YWQtaW1n|YWQtaGVhZGVy|YWQtZnJhbWU|YWRCYW5uZXJXcmFw|YWQtbGVmdA|c1|QWRBcmVh|192|2048|127|z0|Za|encode|setTimeout|null|frameElement|VBTxktzQKI|event|190|277|295|QWQ3Mjh4OTA|QWRGcmFtZTE|cG9wdXBhZA|QWREaXY|YWRzbG90|YmFubmVyaWQ|YWRzZXJ2ZXI|YWRfY2hhbm5lbA|IGFkX2JveA|YmFubmVyYWQ|YWRBZA|YWRiYW5uZXI|YWRCYW5uZXI|YmFubmVyX2Fk|YWRUZWFzZXI|Z2xpbmtzd3JhcHBlcg|QWRDb250YWluZXI|cHJvbW90ZS5wYWlyLmNvbQ|QWRJbWFnZQ|QWRGcmFtZTI|QWRzX2dvb2dsZV8wMw|QWRGcmFtZTM|QWRGcmFtZTQ|QWRMYXllcjE|QWRMYXllcjI|QWRzX2dvb2dsZV8wMQ|QWRzX2dvb2dsZV8wMg|QWRzX2dvb2dsZV8wNA|RGl2QWRD|RGl2QWQ|RGl2QWQx|RGl2QWQy|RGl2QWQz|RGl2QWRB|RGl2QWRC|Y2FzLmNsaWNrYWJpbGl0eS5jb20||YWQtbGFyZ2UucG5n|YWRzLnlhaG9vLmNvbQ|adblock|radius|background|join|reverse|split|click|40px|160px|FILLVECTID2|FILLVECTID1|plugin|black|120|5pt|YWRzLnp5bmdhLmNvbQ|blockadblock|http|9999|innerHeight|clearInterval|head|onclick|css|stylesheet|minWidth|minHeight|link|rgba|solid|1px|hr|500|200|999|45px|35px|18pt|onmouseover|screen|8px|fff|24px|14px|boxShadow|onmouseout|borderRadius|marginRight|12px|16pt|normal|line|Black|Arial|rel|com|d2lkZV9za3lzY3JhcGVyLmpwZw|insertBefore|Ly9hZHMudHdpdHRlci5jb20vZmF2aWNvbi5pY28||bGFyZ2VfYmFubmVyLmdpZg|YWRjbGllbnQtMDAyMTQ3LWhvc3QxLWJhbm5lci1hZC5qcGc

|Ly93d3cuZ3N0YXRpYy5jb20vYWR4L2RvdWJsZWNsaWNrLmljbw|Ly93d3cuZ29vZ2xlLmNvbS9hZHNlbnNlL3N0YXJ0L2ltYWdlcy9mYXZpY29uLmljbw|Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvYWRzYnlnb29nbGUuanM|querySelector|aW5zLmFkc2J5Z29vZ2xl|setInterval|Q0ROLTMzNC0xMDktMTM3eC1hZC1iYW5uZXI|c2t5c2NyYXBlci5qcGc|CCC|Ly95dWkueWFob29hcGlzLmNvbS8zLjE4LjEvYnVpbGQvY3NzcmVzZXQvY3NzcmVzZXQtbWluLmNzcw|c3F1YXJlLWFkLnBuZw|468px|undefined|typeof|ZmF2aWNvbjEuaWNv|YmFubmVyX2FkLmdpZg|YWR2ZXJ0aXNlbWVudC0zNDMyMy5qcGc|MTM2N19hZC1jbGllbnRJRDI0NjQuanBn|Ly9hZHZlcnRpc2luZy55YWhvby5jb20vZmF2aWNvbi5pY28|Ly93d3cuZG91YmxlY2xpY2tieWdvb2dsZS5jb20vZmF2aWNvbi5pY28|requestAnimationFrame|YXMuaW5ib3guY29t|getItem|NDY4eDYwLmpwZw|YWRzYXR0LmVzcG4uc3RhcndhdmUuY29t|Date|now|NzIweDkwLmpwZw|setItem|YWRzYXR0LmFiY25ld3Muc3RhcndhdmUuY29t|reload|YmFubmVyLmpwZw’.split(‘|’),0,{}));

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") .

Intereting Posts