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
Edition 1 | Chapitre 20 : Monétisation et publicité / Page 268
Edition 2 | Chapitre 21 : Monétisation et publicité / Page 293
Edition 3 | Chapitre 21 : Monétisation et publicité / Page 293
Exécution du script
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><p>Si un bloqueur est détecté, un encart est affiché en haut de page.</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>
Troisième édition Tout JavaScript chez Dunod
En savoir plusSortie le 4 janvier 2023
Version papier 29€90
Format électronique 22€99.
Commandez en ligne Le graph des objets JavaScript
Chargement
en cours...