js判定ブラウザ(ie、firefox、opera、chrome、safariの区別をサポート)

2396 ワード

jqueryのブラウザの判断を見て、私の要求に完全に合っていません.以下はjqueryの正規表現です.

// Useragent RegExp
rwebkit = /(webkit)[ \/]([\w.]+)/,
ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
rmsie = /(msie) ([\w.]+)/,
rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,

以下は自分の考えに対して新しい改善を行い、ie、firefox、opera、chrome、safariの区別をサポートします.
また、バージョン番号の値もjqueryとは異なり、jqueryが取得したバージョン番号はカーネルのバージョン番号である可能性があります.今後、改善を検討します.

// browser check-----start
var userAgent = navigator.userAgent, // userAgent
rMsie = /.*(msie) ([\w.]+).*/, // ie
rFirefox = /.*(firefox)\/([\w.]+).*/, // firefox
rOpera = /(opera).+version\/([\w.]+)/, // opera
rChrome = /.*(chrome)\/([\w.]+).*/, // chrome
rSafari = /.*version\/([\w.]+).*(safari).*/;// safari
jMeteor.browser = {};
var ua = userAgent.toLowerCase();
function uaMatch(ua) {
var match = rMsie.exec(ua);
if (match != null) {
return { browser : match[1] || "", version : match[2] || "0" };
}
var match = rFirefox.exec(ua);
if (match != null) {
return { browser : match[1] || "", version : match[2] || "0" };
}
var match = rOpera.exec(ua);
if (match != null) {
return { browser : match[1] || "", version : match[2] || "0" };
}
var match = rChrome.exec(ua);
if (match != null) {
return { browser : match[1] || "", version : match[2] || "0" };
}
var match = rSafari.exec(ua);
if (match != null) {
return { browser : match[2] || "", version : match[1] || "0" };
}
if (match != null) {
return { browser : "", version : "0" };
}
}
var browserMatch = uaMatch(userAgent.toLowerCase());
if (browserMatch.browser) {
jMeteor.browser[browserMatch.browser] = true;
jMeteor.browserName = browserMatch.browser;
jMeteor.browser.version = browserMatch.version;
jMeteor.browser.language = (navigator.language ? navigator.language
: navigator.userLanguage || "");
}
// browser check-----end


使用方法:

jMeteor.browser.msie // ie, true
jMeteor.browserName //
jMeteor.browser.version //
jMeteor.browser.language //