百度联盟广告不能检测微信浏览器

今天发现一个问题,当我在微信内置浏览器访问一介布衣博客时 ,竟然展示了广告...


这当然很惊奇:

一. 我在投放广告的时候选择了移动端不展示.

二.我的blog 是响应式布局,就因为一个横条广告,彻底毁了. (在移动端浏览器不显示广告,但是微信内置浏览器显示blog底部横幅广告)


所以,必须要解决掉.


首先我需要准备一个公共方法,来判断当前浏览器是不是微信内置浏览器 ,正好用的了我之前写到的一篇blog .

我们直接在公共的地方把此方法定义下:

function isWeiXin() {
        var ua = window.navigator.userAgent.toLowerCase();
        if (ua.match(/MicroMessenger/i) == 'micromessenger') {
            return true;
        } else {
            return false;
        }
    }



然后看下联盟广告类似下面的定义方式:

<script type="text/javascript">
    var cpro_id = "u4591660";
</script>
<script src="http://cpro.baidustatic.com/cpro/ui/g.js" type="text/javascript"></script>


然后我尝试了下面2种方式去实现,微信端内置浏览器不显示广告:


出自:百度联盟广告不能检测微信浏览器

第一种:

不动 cpro_id .

创建一个 script dom节点,然后动态去加载 url 路径.

<script type="text/javascript">
    var cpro_id = "u4591660";
    if(!isWeixin()){
        var Domhead= document.getElementsByTagName('head')[0];   
        var script= document.createElement('script');   
        script.type= 'text/javascript';   
        script.src= 'http://cpro.baidustatic.com/cpro/ui/g.js';   
        Domhead.appendChild(script);}
    }
</script>

然后运行发现 console 输出了一个错误.昨天没有保存下截图....

应该是 dom 还没有加载完成, 广告脚本异步加载完成后在页面某个dom内 document.write 标签内容,但是这是这个页面 dom 还没有渲染出来,所以出错了.

看来这条路行不通.


第二种:

尝试把 cpro_id 屏蔽掉.

<script type="text/javascript">
    if(!isWeixin()){
        var cpro_id = "u4591660";
    }
</script>
<script src="http://cpro.baidustatic.com/cpro/ui/g.js" type="text/javascript"></script>

OK,这样确实解决问题了,在微信端,移动端浏览都不再出现广告内容.




回到顶部