jQuery で IE 11 以降を識別する方法
改造した jquery-migrate で $.browser を拡張する

前回は、IE 11 のユーザエージェントから MSIE が消えたことと、それに伴う IE 11 以降の Sniffing (判別) 方法をお話ししました。この影響は jQuery の $.browser にも及びます。

jQuery 1.3 から $.browser の使用はサポート外です。とはいえ、古いプログラムの全てに手を入れることも難しいですから、 jquery-migrate を使って古いバージョンの jQuery と同様の動作を確保して、$.browser を使っている方もおられるでしょう。その場合、IE が msie : true となることを前提したプログラムは正しく動作しなくなります。そこで、今回は IE 11 以降でも msie : true とするための jquery-migrate の改造方法をお話しします。

現時点ではバージョン 1.2.1 が新しいので、これを改造対象の例とします。

jquery-migrate.js には 238 行目あたりに、以下のような部分があります。


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"
	};
};

これを以下のように書き換えます。


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 ) ||
		/(trident)¥/.+rv¥:([¥d+¥.¥d]+)/.exec( ua ) ||
		ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([¥w.]+)|)/.exec( ua ) ||
		[];

	match[1] = (match[1] == "trident") ? "msie" : match[1];

	return {
		browser: match[ 1 ] || "",
		version: match[ 2 ] || "0"
	};
};

こうすることで IE 11 以降も { msie : true, version : "11.0" ... } といった具合に識別できるようになります。
書き換えが面倒な方は jquery-migrate.js をダウンロードしてお使いください。
※改造済のファイルになります。

お問い合わせについて

業務として技術コンサルティングやシステム設計・開発を行っております。
気になることがありましたらご相談下さい。
ご相談のみで完結する場合、コンサルティング費用の目安は
内容によりますが1時間で5千円〜1万円ていどです。
コンサルティングや開発を検討されるその前に、
まずはお気軽にコメントやメールでご連絡下さい。
※ご契約前のコメントやメールでのやりとりは無料です。

お問い合わせフォーム

お急ぎの場合など、ただちに業務対応が必要な場合は、こちらのお問い合わせフォームをご利用ください。かきしちカンパニーお客様窓口が直ちに対応いたします。
※窓口へのお問い合わせ、お見積もりは無料です。


お名前 (必須)

メールアドレス (必須)

題名

メッセージ本文 (必須)

Share

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*