360浏览器的判断技巧

作为前端,浏览器判断是必不可少的。通常我们都是通过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

你可能感兴趣的:(360浏览器的判断技巧)