あんたのお名前何ァんてェの (c)トニー谷
navigator.userAgent文字列を見ないでブラウザ判別はどこまでできるか?
IE11が出て、navigator.userAgent(UA)の文字列から"MSIE"が消えたとかで騒ぎになってるけど(…どこで?w)、何もUAを見なくてもJavaScriptの実装状況でここまで判別できるはずだよ、という簡単なサンプル。
ただし、MacもiPhone(iPad)も持っていないので、Safariの判別はCan I use...に依る。 あと、Androidの2とか3とか4.4も持ってないので同様。
つーことで、SafariやAndroidの人柱緩募。 コメント欄やTwitterでお知らせいただけるとありがたく。
スクリプトをちょっと変更、PrestoのOperaを追記 & IE判別を簡素化
/*
* distinctUserAgent
* JavaScriptの実装からUserAgentを判別
* Copyright (c) 2013 Kazz
* http://asamuzak.jp
* Dual licensed under MIT or GPL
* http://asamuzak.jp/license
*/
(function(_win,_doc) {
var UA = _win.opera ? 'Opera12' :
!_doc.documentMode && _win.attachEvent ? 'IE7' :
_doc.documentMode ? 'IE' + _doc.documentMode :
!_win.matchMedia ? 'Safari4 / AndroidBrowser2' :
!_win.ArrayBuffer ? 'AndroidBrowser3' :
!_win.requestAnimationFrame && !_win.webkitRequestAnimationFrame ? 'Safari5 / AndroidBrowser4.3' :
!_win.requestAnimationFrame ? 'Safari6' :
!_win.CSS ? 'Safari7' :
!_win.CSS.supports('(animation-timing-function: ease)') ? 'Chrome / Opera / AndroidBrowser4.4' : 'Firefox';
console.log(UA);
/*
注:IE7はIE6以下を含む
SafariにはiOS Safariを含む。また、Safari5には5.1も含み、6には6.1も含む
AndroidBrowser2は~2.3まで
AndroidBrowser4.3は4.0~4.3まで
Opera12はPresto、Opera(番号なし)はBlinkのOpera
Chrome等とFirefoxの判別は暫定的(将来Chromeがanimationのprefixを外したら判別できず)
*/
})(window,document);
なお、IEのみのバージョン判定でよければ、こちらのIE判別方法もご参照を
"あんたのお名前何ァんてェの (c)トニー谷"へのTwitter上でのコメントやRT
7件のツイートがあります。
ツイート 1
asamuzaK.jp : あんたのお名前何ァんてェの (c)トニー谷 / navigator.userAgent文字列を見ないでブラウザ判別はどこまでできるか? http://t.co/U1WNQGht1H
ツイート 2
MacのSafari5でも確認できた / asamuzaK.jp : あんたのお名前何ァんてェの (c)トニー谷 / navigator.userAgent文字列を見ないでブラウザ判別はどこまでできるか? http://t.co/U1WNQGht1H
ツイート 3
スクリプト更新、PrestoのOperaを追記+IE判別を簡素化 / asamuzaK.jp : あんたのお名前何ァんてェの (c)トニー谷 / navigator.userAgent文字列を見ないでブラウザ判別はどこまでできるか? http://t.co/U1WNQGht1H
ツイート 4
.@gaogao_9 参考までにこちらもどうぞ http://t.co/mDz3aGvdvY ただし、作ってみたはいいけど、自分でも使ってはいないんですがw
ツイート 5
つ http://t.co/U1WNQGht1H 最後に UA !== 'Firefox' && alert('Firefoxで見ろよ'); でお望みの挙動が得られるのではないかと思われ…w RT @sk_Hypnopedia: ブラウザ判定してFireFoxで見ろよって(略)
ツイート 6
RT @asamuzakjp: つ http://t.co/U1WNQGht1H 最後に UA !== 'Firefox' && alert('Firefoxで見ろよ'); でお望みの挙動が得られるのではないかと思われ…w RT @sk_Hypnopedia: ブラウザ判定し…
ツイート 7
object要素でSVG Fragment使うためのフォールバックの妄想メモ… !window.requestAnimationFrame && !window.webkitRequestAnimationFrame で判別 http://t.co/t8Gaa1ori4