JQueryを使用してIE9以下を検出できるようにしたい(またはより良い方法があるかどうか)。ブラウザのバージョンがIE9以下の場合、Chrome、FFなどにアップグレードするオプションを備えたモーダルをロードしたいと思います。
$ .browserが機能しなくなったことを読んだので、私が望むことを達成するための最善の方法は何か疑問に思っています。
$(document).ready(function(){
/* Get browser */
$.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase());
/* Detect Chrome */
if($.browser.chrome){
/* Do something for Chrome at this point */
alert("You are using Chrome!");
/* Finally, if it is Chrome then jQuery thinks it's
Safari so we have to tell it isn't */
$.browser.safari = false;
}
/* Detect Safari */
if($.browser.safari){
/* Do something for Safari */
alert("You are using Safari!");
}
});
IEバージョンの検出にjQueryを使用しないでください。代わりに条件付きコメントを使用してください。
どうして?そもそもなぜこれらの古いバージョンをターゲットにしたいのか考えてみてください。おそらく、必要な特定のJS/CSS機能をサポートしていないためです。では、これらの古いバージョンで実行されると確信している独自のJSコードを本当に維持したいですか?あなたがそのルートに行くなら、あなたはあなたが書いた検出コードがIE6または5または4で機能するかどうかについて考え始める必要があります...苦痛です!
代わりに、次を試してください。
以下の例では、CSSを使用した単純なリビールを使用していますが、必要に応じてこれをJSに簡単に置き換えることができます。複雑にしすぎないでください。そうしないと、初期のIEバージョンで簡単に壊れてしまう可能性があります。
#index.html
<html>
<head>
<link rel="stylesheet" type="text/css" href="main.css">
<!--[if lte IE 9]>
<link rel="stylesheet" type="text/css" href="ie-only.css">
<![endif]-->
</head>
<body>
<div class="ie-only">Go upgrade your browser!</div>
</body>
</html>
#main.css
.ie-only { display: none }
#ie-only.css
.ie-only { display: block }
ここに便利な 条件付きコメント参照 があります。
var browser = {
isIe: function () {
return navigator.appVersion.indexOf("MSIE") != -1;
},
navigator: navigator.appVersion,
getVersion: function() {
var version = 999; // we assume a sane browser
if (navigator.appVersion.indexOf("MSIE") != -1)
// bah, IE again, lets downgrade version number
version = parseFloat(navigator.appVersion.split("MSIE")[1]);
return version;
}
};
if (browser.isIe() && browser.getVersion() <= 9) {
console.log("You are currently using Internet Explorer" + browser.getVersion() + " or are viewing the site in Compatibility View, please upgrade for a better user experience.")
}
var isIE9OrBelow = function()
{
return /MSIE\s/.test(navigator.userAgent) && parseFloat(navigator.appVersion.split("MSIE")[1]) < 10;
}
$。browser() は削除されます jqueryバージョン1.9 スクリプトで以下のコードを使用します。
(function($) {
var matched, browser;
// Use of jQuery.browser is frowned upon.
// More details: http://api.jquery.com/jQuery.browser
// jQuery.uaMatch maintained for back-compat
jQuery.uaMatch = function( ua ) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
/(webkit)[ \/]([\w.]+)/.exec( ua ) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
/(msie) ([\w.]+)/.exec( ua ) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
// Don't clobber any existing jQuery.browser in case it's different
if ( !jQuery.browser ) {
matched = jQuery.uaMatch( navigator.userAgent );
browser = {};
if ( matched.browser ) {
browser[ matched.browser ] = true;
browser.version = matched.version;
}
// Chrome is Webkit, but Webkit is also Safari.
if ( browser.chrome ) {
browser.webkit = true;
} else if ( browser.webkit ) {
browser.safari = true;
}
jQuery.browser = browser;
}
})(jQuery);
サイトポイント から調整:
if(navigator.appVersion.indexOf("MSIE 9.") !== -1)