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客戶端了麼?(機智臉^-^)