360浏览器分为极速模式和兼容模式,内核是IE+ Chrome双内核的,在极速模式下是跟谷歌浏览器内核一致的,兼容模式下的内核是IE内核,所以目前在极速模式下360浏览器的userAgent信息和谷歌浏览器的信息基本一致了
第一种方法:
利用window.navigator.userAgent获取当前浏览器的user-agent信息,但是有一个问题就是,360浏览器在不同域名下返回的user-agent信息是不一样的,只有360自家的网站下返回的user-agent信息才是有带着“360SE”或者“360EE”标识的,例如百度等其他网站,返回的user-agent信息中是不带有“360SE”或者“360EE”标识的,故无法很好的进行判断是否为360浏览器。
第二种方法(浏览器版本不同的情况下,有可能无法判断):
360(极速模式):
谷歌:
所以采取的判断方法是根据navigator.userAgent.toLocaleLowerCase()方法判断内核分辨,代码如下:
function isNumberBrowser() {
if (window.navigator.userAgent.indexOf('Safari') != -1) {
if (window.navigator.userAgent.toLowerCase().includes('wow64')) {
console.log('360浏览器');
} else {
console.log('谷歌浏览器');
}
} else {
// 可以进行其他浏览器(除谷歌和360浏览器外)的判断
}
}
第三种方法:
判断是否存在np-mswmp.dll文件,截止到2023年11月份,谷歌浏览器下未查询到该文件,但是在360浏览器下存在该文件,代码如下:
if (window.navigator.userAgent.indexOf('Safari') != -1) {
for (var key in navigator.plugins) {
// console.log(key, navigator.plugins[key])
if (navigator.plugins[key].filename == 'np-mswmp.dll') {
console.log('360浏览器')
} else {
console.log('谷歌浏览器')
}
}
} else {
// 可以进行其他浏览器(除谷歌和360浏览器外)的判断
}
第四种方法:
判断mimeTypes,在360极速浏览器中的这个属性中会有一个mimeTypes的type属性值为application/vnd.chromium.remoting-viewer,如果是360极速浏览器则返回true,如果是谷歌就返回false,代码如下:
function isNumberBrowser(option, value) {
let mimeTypes = navigator.mimeTypes;
for (var mt in mimeTypes) {
if (mimeTypes[mt][option] == value) {
return true;
}
}
return false;
}
isNumberBrowser("type", "application/vnd.chromium.remoting-viewer")