百度联盟广告不能检测微信浏览器
今天发现一个问题,当我在微信内置浏览器访问一介布衣博客时 ,竟然展示了广告...
这当然很惊奇:
一. 我在投放广告的时候选择了移动端不展示.
二.我的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,这样确实解决问题了,在微信端,移动端浏览都不再出现广告内容.