[解決済み】JavaScriptでIEのバージョン(v9以前)を検出する。
2022-04-01 12:01:12
質問
のバージョンを使用しているユーザーをエラーページにバウンスさせたい。
Internet Explorer
v9より前のバージョンをサポートするのは時間的にも金銭的にも割に合いません。
IE pre-v9
. 他のすべてのIE以外のブラウザのユーザーは問題なく、バウンスされるべきではないでしょう。以下は、提案されたコードです。
if(navigator.appName.indexOf("Internet Explorer")!=-1){ //yeah, he's using IE
var badBrowser=(
navigator.appVersion.indexOf("MSIE 9")==-1 && //v9 is ok
navigator.appVersion.indexOf("MSIE 1")==-1 //v10, 11, 12, etc. is fine too
);
if(badBrowser){
// navigate to error page
}
}
このコードで大丈夫でしょうか?
おそらく私のところに来るであろういくつかのコメントを阻止するために。
-
そうですね、ユーザーが自分の
useragent
の文字列を使用します。心配はしていない。 -
そうですね、プログラミングのプロは、ブラウザタイプではなく、機能サポートを嗅ぎ分けることを好むのは知っていますが、今回のケースではこのアプローチは意味がないと感じています。私はすでに、すべての(関連する)非IEブラウザが、私が必要とする機能をサポートしていることを知っていますし、すべての
pre-v9 IE
のブラウザはそうではありません。サイト全体で機能ごとにチェックするのは、無駄が多いと思います。 -
たしかに、「Skype」を使ってアクセスしようとする人がいることは知っています。
IE v1
(または >= 20) では、「badBrowser」が true に設定されず、警告ページが正しく表示されないと思います。それは、私たちが負うべきリスクです。 -
はい、マイクロソフトには、ブラウザのバージョンを正確に検出するために使用できる "条件付きコメント" があることは知っています。IEは、以下の時点で条件付きコメントをサポートしなくなりました。
IE 10
そのため、この方法は全く役に立ちません。
その他に注意すべき点はありますか?
解決方法は?
これは私が好む方法です。最大限のコントロールが可能です。(注:条件文はIE5〜9でのみサポートされています。)
まず、ieのクラスを正しく設定する
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
<head>
あとはCSSでスタイルの例外を作ればいいし、必要なら簡単なJavaScriptを追加すればいい。
(function ($) {
"use strict";
// Detecting IE
var oldIE;
if ($('html').is('.lt-ie7, .lt-ie8, .lt-ie9')) {
oldIE = true;
}
if (oldIE) {
// Here's your JS for IE..
} else {
// ..And here's the full-fat code for everyone else
}
}(jQuery));
ありがとうございます ポール・アイリッシュ .
関連
-
[解決済み】Failed to load resource: net::ERR_FILE_NOT_FOUND loading json.js
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】JavaScript版sleep()とは?)
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Javascript:getElementById対getElementsById(両方が別のページで動作する)。
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み】XMLHttpRequestモジュールが定義されていない/見つからない
-
[解決済み】JavaScript ランタイムエラー:'$'が未定義です。
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み】TypeError: res.status は関数ではありません。
-
[解決済み】'useState' が定義されていない no-undef React
-
[解決済み] ユーザーがIEを使用しているかどうかを確認する
-
[解決済み】IE11用のCSSハックを書くには?[重複あり]
-
[解決済み] Internet Explorer 固有の CSS や Internet Explorer 固有の JavaScript コードなど、特定の状況下で Internet Explorer 10 のみをターゲットにするにはどうすればよいですか?