• 有人来问我那个广告屏蔽的检测怎么做的,其实这东西很早就有了,原理也很简单。

    比如我博客上的代码是这样的:

     

    <div class="entry-content clearfix" id="ad">
        /*我是广告内容*/
        <script>var s=setInterval(function(){if(document.getElementById('ad').offsetHeight==0){document.getElementById('ad').innerHTML="我们的站点维护需要很多资金和精力,请不要屏蔽本站广告,以维持我们微薄的收入,谢谢!";}clearInterval(s);},2000);</script>
    </div>
    

    其实当时写的时候有点2B了,也不知道怎么想的,这段代码有一些问题需要注意。

    1.这个DIV的ID最好不要为AD,否则某些屏蔽插件直接把JS和提示所在的DIV直接屏蔽掉了。 2.如果网页加载快的话,可能需要过1秒左右才能显示提示。 3.Interval换成Timeout更合适,可以节省clearInterval的步骤。 4.不需要每次都去getElement一次,可以先存到变量中。

    所以对代码稍加修改:

    注释比较全 自己看吧 如果部分字体看不清注释可以点击语言名查看纯文本

    <div class="entry-content clearfix" id="2333">//放JS的DIV不要叫AD
        <div id="adcontent">//adcontent是应该直接是Easylist里的名单,如果没有放广告的花这个div也是应该会被屏蔽的
         /* 我是广告 */
        </div>
        <script>
         window.onload = function(){
             var ele = document.getElementById('adcontent');
             if(ele.offsetHeight==0){//判断广告DIV的高度是否为0,检测的原理也就是这个
                 ele.innerHTML='我们的站点维护需要很多资金和精力,请不要屏蔽本站广告,以维持我们微薄的收入,谢谢!';//在这里放检测到之后要做的动作
             }
             //如果已有window.onload事件,只需要把这3行代码加入即可,因为onload事件是等待所有DOM元素加载完成之后才执行的,不需要担心广告加载慢
         }
    
        </script>
    
    </div>