Skip to content

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

--> -->

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

这当然很惊奇:

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

二.我的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">&lt;/script&gt;

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

第一种:

不动 cpro_id .

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

&lt;script type="text/javascript"&gt;
    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);}
    }
&lt;/script&gt;

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

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

看来这条路行不通.

第二种:

尝试把 cpro_id 屏蔽掉.

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

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