POPSブログ

jQueryによるブラウザ判定サポート終了

131

  Category:  jquery2012/07/03 pops 

jQueryによるブラウザ判定を行うには「jQuery.browser」を使用して判別(必ずしも正確ではない)できるのは周知のとおりであり、非推奨であることもご存知だと思います。さてjQuery-1.9から完全に削除されるようです。

 

jQuery-1.9から「jQuery.browser」が完全にサポートされなくなる

「jQuery.browser」を使用して判別している場所も多々ありますので、jQuery-1.9から完全にサポートされなくなることは困ります。推奨される「jQuery.support」だけでは処理仕切れない事もあり、IE6 7 8 と問題だらけですので、バージョンに応じた処理をしなければならないこともあります。どうしても簡単な判別法が必要です。


この記事は古くなっていますので、最新の記事をUPしましたので下記記事を参照ください。2014/04/01

IE10 IE11 を含むブラウザ判定です。

【新しい参照記事】当方の記事: Javascript IE10 IE11 のブラウザ判定



私の以前の判定方法

javascriptで判定すれば良いのですから困ることもないのですが、一つ問題があります。IEのブラウザ確認には大半「IETester」を使用していることと思いますが、この際にjavascriptで「IE判定が不正確」な事態が発生する場合があります。
そのために、3年前より下記のコードで判定を行って来ました。「IETester」を使用しても正確ですが「jQuery.browser」がサポート完全終了となれば別の方法を考えざるえません。

「IETester」のバージョンによっても違いがあると思います。その外少しバグがあったりすることもあります。



//一応IE判定は出来る
var browserIE = 0;//IEか
var browser_v = 0;//バージョン番号
if (jQuery.browser.msie) {
	browserIE = 1;
	if (navigator.userAgent.match(/MSIE (¥d¥.¥d+)/)) {browser_v = parseFloat(RegExp.$1);}//IE6.7.8.9
}

新しい判定方法


● ご使用のブラウザ名が表示されます。但しIE8、互換表示設定の場合はIE7と表示されます。


BROWSER

下記の記事を参考に、他の判定方法も組み合わせて以下ようになります。一応「IETester」を使用しても正確です。

【参考】phpspot: JavaScriptでIEかどうかをたったの1行で判別する方法


JS (javascript)


IEの判定だけの場合


var browserIE = 0;//IE判定
var browser_v = 0;//IEバージョン番号

if (/*@cc_on!@*/false) {
	browserIE = 1;
	if (navigator.userAgent.match(/MSIE (¥d¥.¥d+)/)) {browser_v = parseFloat(RegExp.$1);}//IE6.7.8
}

上記JS部分文字化けする事が有りますので、図示します。

 

IE以外の判定もしたい場合


var userAgent = window.navigator.userAgent.toLowerCase();
var browserIE = 0;//IE判定
var browser_v = 0;//IEバージョン番号
var browser_nm = "";//browser名

if (/*@cc_on!@*/false) {

	browserIE = 1;
	browser_nm = "IE";

	if (navigator.userAgent.match(/MSIE (¥d¥.¥d+)/)) {browser_v = parseFloat(RegExp.$1);}//IE6.7.8.9

	}
	else if (userAgent.indexOf("firefox") > -1) {browser_nm = "Firefox";}
	else if (userAgent.indexOf("opera") > -1) {browser_nm = "Opera";}
	else if (userAgent.indexOf("chrome") > -1) {browser_nm = "Chrome";}
	else if (userAgent.indexOf("safari") > -1) {browser_nm = "Safari";}
	else {
	browser_nm = "Unknown";
}

追加

IEの判定で、browserIE=0にしていますが、2013/01/25/追加


宣言
var browserIE=false;//IE判定

判定はこの方が良いかも知れない
browserIE=true;

理由
true false のブーリアン型以外の判定では、ブラウザにより undefined になります
if (browserIE) {
	//
}

この方が使い易いかも知れません。変数名、初期値などは自由ですが。
この方法などで修正すれば「jQuery.browser」判定のプラグイン等も、jQuery-1.9で作動させることも可能です。


IE8以降の互換表示設定、IEバージョン判定など、関連の良い記事がcyokodogサンのところにありました。

【参考】cyokodog: IE のレンダリングバージョンの指定と判定方法の自分なりまとめ


IEのない世の中が早く来ますよう、みんなでお祈りいたしましょう。


以上です。

 


[ この記事のURL ]


タグ:memo , javascript , jquery

 

ブログ記事一覧



[1]