1.uc极速版浏览器和uc浏览器navigator.userAgent的输出结果会有所不同
在解决线上bug的时候,发现请求的路径URL的部分字段是根据navigator.userAgent的结果来决定的。
const isAndroid = () => {
const u = navigator.userAgent
return u.indexOf('Android') > -1 || u.indexOf('Linux') > -1
}
const ua = navigator.userAgent.toLowerCase();
let platform = '';
if (ua.indexOf('ucbrowser') > 0) {
platform=isAndroid()?4:3;
}
const pathPrefix = {
3: 'ucios',
4: 'ucan',
}
return axios.post({
url: `/${pathPrefix[platform]}/.....'
})
最后出现路径中出现了undefined
思考:
- 产生bug的原因一定是platform的值的问题导致的。
- 猜想是可能出现获取不到ua的情况-----》尝试之后,不是
- 分析用户返回的数据:发现导致bug的因素有:客户端的版本号
- 从版本号入手,下载尝试----》最终发现是极速版uc浏览器返回的navigator.userAgent不一样,导致在进行判断的时候,找不到ucbrowser,所以platform的值是空串,导致路径出现undefined。
产生bug的原因:不同版本的uc浏览器返回的navigator.userAgent不一样,导致在进行判断的时候,找不到ucbrowser,所以platform的值是空串,导致路径出现undefined。
最后发现:同一浏览器输出的ua有可能也会有所不同,如图(V13.8.5.1147)
最新浏览器的输出的ua,如图(v15.0.3.1193)