Retourner à la page d'accueil de TJS

Script adblock : Détecter les bloqueurs de publicité

Détecter Adblock et autres bloqueurs de publicité pour afficher des contre-mesures et inviter les utilisateurs à passer en liste blanche
Partie III : Pour aller encore plus loin avec JavaScript / Chapitre 20 : Monétisation et publicité / Page 268

Exécution du script

Emulation de la console

Code source

<html><head>    <title>Détection de bloqueur de pubs</title></head><body>  <h1>Script de détection de bloqueur de pubs</h1><p>La console JavaScript affiche toutes les étapes de détection</p>    <script>/* Fonction de contre-mesure suite à la détection */function contreMesure() {  var doc=document;  var name="mynameID";  var i=doc.createElement("div");  i.setAttribute("id",name);  i.setAttribute("class","contremesure");  i.innerHTML="Adblock détecté <br> Merci de désactiver votre AdBlock pour le site Tout JavaScript";    var s=doc.getElementsByTagName("div");            doc.body.appendChild(i);}/* Fonction auto-exécutée qui appelle action() si un adblock est détecté */(function(action) {  var doc=document;  TJSdetect={    version: '1.0',    elementID:'TJSdetection',    launched: false,    complete: false,    success: false,    detected: false,    timeoutID: null,    progress: 0,    timer: 0,    onComplete: function(){ /* Fin de l'analyse */      this.log("Complete:"+this.complete+" Success:"+this.success+" Detected:"+this.detected);    },    onDetect: function() {  /* Détection du bloqueur : lancement de action */      this.log("onDetect()");      action();    },        /* Vérifie la présence de l'élément publicitaire HTML */    testElement: function() {      this.progress=4;            this.log("testElement()");      var i=doc.getElementById(this.elementID);      if (typeof i === "undefined") { /* Element non trouvé */        this.complete=true;        this.success=false;        this.detected=false;      } else {        if (i.offsetParent===null) { /* Elément caché : ABP */          this.complete=true;          this.success=true;          this.detected=true;          this.onDetect();        } else {          this.complete=true;          this.success=true;          this.detected=false;        }          }      this.progress=9;      this.onComplete();    },          /* Lancement global de la détection */    launch: function() {      this.timer=this.getTimer(); /* Init chrono */      this.log("Lancement TJSdetect version "+this.version);      this.launched=true;          this.progress=1;                        /* Attacher l'élément HTML */      var element=doc.createElement("div");      element.setAttribute("id",this.elementID);      /* Définir une caractéristique qui déclenche la suppression par adblock */      element.setAttribute("class","adsbygoogle");       /* Rendre invisible cet élément aux utilisateurs */      element.setAttribute("style","position:absolute; top:-10px; left:-10px; width:1px; height:1px;");      doc.body.appendChild(element);      this.progress=2;            this.log("Element HTML id='"+this.elementID+"' ajouté");            /* Attendre un délai suffisant pour que Adblock puisse traiter l'élément */              this.timeoutID=setTimeout(this.testElement.bind(this), 250);    },          /* Outils de log et timers performances */    getTimer: function() {      if (typeof window.performance !== undefined) {        return window.performance.now();      } else {        var d=new Date();        return d.getTime();                  }    },            log: function(l) {      var h=(this.getTimer()-this.timer);      if (typeof console !== undefined) {        console.log(h.toFixed(1)+" ms : "+l+" (progression="+this.progress+")");      }    },  }  TJSdetect.launch();})(contreMesure); /* La fonction contreMesure est définie pour afficher un message */        </script><style>  .contremesure{    position:fixed;     top:10px;     right:10px;     width:300px;     height:60px;     background-color:#f00;     color:#fff;     font-size:18px;     font-weight:bold;     padding:6px;     box-shadow: 2px 2px 3px #f00;  }</style></body></html>

Mon nouveau livre Tout JavaScript chez Dunod

Tout JavaScript le livre chez DunodEn savoir plus
Sortie le 6 février 2019

Version papier à 29€90
Format électronique à 21€90.

Commandez en ligne Dunod  Fnac  Amazon

Chercher une fonction, un objet, ...

Le graph des objets JavaScript



Chargement
en cours...

Nouveau service en ligne de TJS

cleanMyJS : Détectez toutes les erreurs JavaScript de vos sitescleanMyJS.com
Détectez, enregistrez et analysez toutes les erreurs JavaScript de vos sites
Le 25/04/2019 22:07:41 sur php7 en 68.14 ms