var browser = {
version: function () {
var u = navigator.userAgent;
var ua = navigator.userAgent.toLocaleLowerCase();
var app = navigator.appVersion;
return {
trident: u.indexOf('Trident') > -1,
presto: u.indexOf('Presto') > -1,
webKit: u.indexOf('AppleWebKit') > -1,
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,
mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/),
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
android: u.indexOf('Android') > -1 || u.indexOf('Mac') > -1,
iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1,
iPad: u.indexOf('iPad') > -1,
webApp: u.indexOf('Safari') == -1,
QQbrw: u.indexOf('MQQBrowser') > -1,
weiXin: u.indexOf('MicroMessenger') > -1,
QQ: ua.match(/QQ/i) == "qq",
weiBo: ua.match(/WeiBo/i) == "weibo",
ucLowEnd: u.indexOf('UCWEB7.') > -1,
ucSpecial: u.indexOf('rv:1.2.3.4') > -1,
webview: !(u.match(/Chrome\/([\d.]+)/) || u.match(/CriOS\/([\d.]+)/)) && u.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/),
ucweb: function () {
try {
return parseFloat(u.match(/ucweb\d+\.\d+/gi).toString().match(/\d+\.\d+/).toString()) >= 8.2
} catch (e) {
if (u.indexOf('UC') > -1) {
return true;
}
return false;
}
}(),
Symbian: u.indexOf('Symbian') > -1,
ucSB: u.indexOf('Firofox/1.') > -1
};
}()
};
- 一般的客户端环境直接调用browser.version.xx进行判断即可
- 但是使用browser.version.QQ时,在QQ客户端和QQ浏览器中均返回true,所以无法判断。
- 但是的但是,还有一个browser.version.QQbrw可以用来判断是否为QQ浏览器
- 所以的所以,通过(browser.version.QQ && !browser.version.QQbrw)组合,不就可以判断是否为QQ客户端了么?(机智脸^-^)