因爲咱們網站上的廣告常常被一些廣告插件給屏蔽掉,上級給我下達了一個檢測瀏覽器是否安裝了屏蔽廣告的插件的任務。css
通過研究,借鑑,參考,整合了以下三種解決方案。jquery
方案一:git
利用廣告插件經過對含有google-ad,testad,ad等,帶ad的敏感詞彙的dom元素進行屏蔽的方式尋找突破口,我模擬了一個<div class="google-ad">這裏是一個廣告位</div>將這個div加載在頁面的dom節點的最頂端,發現全部的廣告插件,都能檢測到這個廣告位而且採用dispaly:none,或者將div的高度塌陷變爲0,因而咱們有了下面的方法。github
在頁面頂部加上<div class="google-ad testAd"> 這裏是一個廣告位</div>,而後加入以下代碼:ajax
<script src="jquery.min.js"></script> <script> $(function(){ if($('.google-ad').height()==0 || $('.google-ad').css('display') == 'none'){ console.log($('.google-ad').height()); console.log($('.google-ad').css('display')); alert('您的瀏覽器安裝了屏蔽廣告的插件Adblock,or uBlock Origin,要使您可以正常使用網站請先屏蔽瀏覽器上的相關的廣告屏蔽插件。'); } }) </script>
方案二:瀏覽器
模擬動態加載一個廣告(ads.js)的方式,若是安裝了廣告插件,則這個廣告js(ads.js)不會被加載成功。dom
新建一個空白的ads.js文件。網站
在頁面上寫上以下代碼:google
1 <script src="jquery.min.js"></script> 2 <div style="text-align:center;clear:both;"> 3 <script> 4 $(function(){ 5 $.ajax({ 6 url: "ads.js", 7 dataType: "script" 8 }).fail(function () { 9 alert('您的瀏覽器安裝了屏蔽廣告的插件Adblock,or uBlock Origin,要使您可以正常使用網站請先屏蔽瀏覽器上的相關的廣告屏蔽插件。'); 10 }); 11 }) 12 </script>
方案三:url
參照網上一位仁兄寫的代碼,親測有效。項目地址:https://github.com/sitexw/FuckAdBlock。
方案四:逆向思惟
要想本身網站上的廣告位圖片不被屏蔽掉,網站上加載的廣告js可以正常加載,就不要使用可以被廣告插件輕易讀取識別的命名規則去命名廣告了。
這個問題的解決方法,再次檢驗了一個實用方法論:當苦苦思索的方法解決不了問題時,不妨轉化思路能夠採起迂迴的戰術間接尋求問題的解決方法。