作为前端,浏览器判断是必不可少的。通常我们都是通过Useragent字符串来匹配浏览器特征,判断出用户使用的是什么浏览器。然后360浏览器因为市场竞争的问题,把自己的Useragent隐藏起来,伪装成Chrome和IE(虽然本来就是个外壳)。只有360自己的网站支持显示正常的UA。这给浏览器识别带来了很大的障碍,于是寻找360浏览器特征就成了解决问题的关键。
在网上我也找了很多识别方法,然而几乎都不能用了!
方案1:
if((window.navigator.mimeTypes[40] || !window.navigator.mimeTypes.length)){
alert("360浏览器!");
}
然后测试了一下,搜狗高速也判断通过了!
方案2:
if(window.external&&window.external.twGetRunPath&&window.external.twGetRunPath().toLowerCase().indexOf("360se")>-1){ alert('本站不支持360浏览器访问,请更换其他浏览器!');}
测试无效!
方案3:
请求res://360se.exe/2/2025方式判断(具体代码可以百度看看,反正无效)
测试无效
方案4:
var is360 = (function(option, value){
var mimeTypes = navigator.mimeTypes;
for (var mt in mimeTypes) {
if (mimeTypes[mt][option] == value) {
return true;
}
}
return false;
})("type", "application/vnd.chromium.remoting-viewer");
这个方案目前看还是有效的,但是因为太长还有文章说部分浏览器还是会有误判
于是乎,自己在window变量里面找机会,找了一个下午终于找到了还算有效的判断方式:
var is360 = window.showModalDialog&&window.chrome;
只要是chrome内核的360浏览器都能识别出来,而且其他国内常见的浏览器并没有匹配到!showModalDialog是一个古老的方法,IE浏览器中是存在的,但是Chrome早就删除了(或者从来没有存在过),不知道360为什么会加上去……
浏览器测试演示地址:http://passer-by.com/browser/
感兴趣的还可以关注我的项目:https://github.com/mumuy/browser