debug经历-ios uc也会屏蔽请求

最近做触屏版,刚好在本地环境复现一下测试提的bug。

因为测试环境是打包压缩的代码了,如果本地环境能复现,就直接本地改了了事。

没想到手机代理到电脑网络访问本地环境的页面时,页面内容不完整,再仔细一看,是业务js没执行了。

关键是微信上不会出现问题 ,就出现在iphone5s跟我的iphone6的uc上会出现这个问题。起初以为是标签没写好,导致浏览器做了容错处理。

然而把html删到快没了,还是不行。于是在代码里加alert来看哪里出的问题。为什么用alert不用console呢。

本来用weirne的,但是发现weirne打开的监视页面console也没有报错,看不了resource,我也没法知道情况。

最终定位到问题所在。

var pop = require('common:widget/pop/pop.js');
//只要上面的require在,下面就不会执行了。

于是我尝试把改成

var pop = function(){};

代码又可以执行下去了。ps: require这里用的是fis的modjs模块化。

真是神奇了,突然想到以前在chrome上打开页面的时候发现页面会报错 ,原因是我开着adblock,然后它屏蔽了pop.js,于是我猜想难道这里也是这样?

还真的,通过几个方法发现了问题所在:

  1. 给pop.js改名后,效果就正常了
  2. network下看到确实没有pop.js的请求
  3. 在modjs里把找不到模块报错方式throw改成alert,真的就alert了。

另外,我又弄了个小页面,直接引用一个只有alert的pop.js文件,真的是一点反应也没用。

于是可以肯定 ios uc下应该做了类似adblock对pop.js的屏蔽。不知道会不会还有其他的屏蔽呢,为什么说ios呢,同事用安卓访问本地环境一点问题都没有。

想起原本还想着uc浏览器怎么没有adblock这样的插件,难道ios内置了么?为毛我看那些小网站的广告还是满屏飞~细想一下,我如果一开始就察觉到没有pop.js的请求,也就不用花那么多时间排查了啊,还是图样啊!!!