navigator.userAgent
簡単に変更でき、ページを表示している実際のブラウザを表していない可能性があるという意味で、これはあまり信頼できないことを指摘したいと思います。$.browser
これは、そもそも廃止された理由の1つである可能性があります。
しかし、質問のために、ブラウザの検出が絶対に必要であると仮定しましょう。
James Padolseyによるこの非常にクールなスニペットに出くわしました。これは、条件付きコメントを使用してInternetExplorerを実際に区別します。
上記のスニペットとyepnope.jsのコードを使用して小さなコードをコンパイルしました:
(function(window, doc) {
window.detector = window.detector || (function() {
var undef,
docElement = doc.documentElement,
v = 3,
div = document.createElement('div'),
all = div.getElementsByTagName('i'),
isGecko = ( 'MozAppearance' in docElement.style ),
isGeckoLTE18 = isGecko && !! doc.createRange().compareNode,
isOpera = !! ( window.opera && toString.call( window.opera ) == '[object Opera]' ),
isWebkit = ( 'webkitAppearance' in docElement.style ),
isNewerWebkit = isWebkit && 'async' in doc.createElement('script');
while (
div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
all[0]
);
return {
isGecko: isGecko,
isGeckoLTE18: isGeckoLTE18,
isGeckoGT18: isGecko && ! isGeckoLTE18,
isOpera: isOpera,
isWebkit: isWebkit,
isNewerWebkit: isWebkit && 'async' in doc.createElement('script'),
isIE: ( v > 4 ),
ieVersion: ( v > 4 ? v : undef )
};
}());
}(window, document));
これは、ブラウザの機能によってブラウザを区別します。
唯一の問題は、現在、SafariとChrome(両方のWebkitブラウザー)、およびGecko、Webkit、Operaブラウザー自体のバージョンを区別する方法がないことです。
完璧ではないことはわかっていますが、。よりもわずかに改善されていnavigator.userAgent
ます。