JavaScript難題:userAgentだけでMacOSのバージョンを引っこ抜くチャレンジ

公開日: : 最終更新日:2015/10/09 javascript ,

JavaScript環境で、navigator.userAgentを見てMacOSのバージョンだけを引っこ抜く方法があるか検討してみました。 Windowsなら入ってるんですけどね、Macって結構カオスだったはずなんですが限定すれば意外とイケるかも?です。

javascript logo

注) 特に上のロゴは寂しいので置いただけです。以下のサイトで作れました。

MOJI MAKER Z | ドラゴンボールZ 神と神 2013年3月30日全国超拡大公開!

調査

なぜMacOSのバージョン判定がカオスか?それは簡単。「色々な記述があるから・・・」です。

試しに見てみましょう。今使ってるChromeのuserAgentは・・・

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.58 Safari/537.36

はい、次はSafari

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.73.11 (KHTML, like Gecko) Version/7.0.1 Safari/537.73.11

最後にFirefox

Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:27.0) Gecko/20100101 Firefox/27.0

あれ、なんか昔はja-JPとかそもそもVersion書いてないとかありましたけど、意外とイケるくさい・・・!?(PowerPPCとか・・・)

ちょっとこちらのサイトで見てみたら、以下の環境以上ならなんか似通ったルールになってました。

  • Firefox 3.0以上(最新:27)
  • Safari 3.1.x以上(最新:7.0.1)
  • Chrome 11以上(最新:33)
  • Opera 12以上(最新:19)

うん、もう割り切りでいいよね・・・。

ということでこんな正規表現でバージョン抜き出して綺麗に整形!

結果

Mac OS X ([0-9]+)[_.]([0-9])[_.]?([0-9]?)

これをString.match()あたりに使うと1個目〜最大3個目までバージョンナンバー取れます。 最後の3個目はFirefoxの場合取れないのでまぁそこはよしなに。(”?”にしてるので取れなくても正規表現は反応します)

もし、メンテナンスバージョン部分を取れるか取れないかで分けるならこんな感じ。

メンテナンスバージョンまで取れる場合

Mac OS X ([0-9]+)[_.]([0-9])[_.]([0-9])

メンテナンスバージョンが取れない場合(Firefoxなど)

Mac OS X ([0-9]+)[_.]([0-9]);

まとめ

  • ここ2〜3年以内のブラウザであればMacのOSだけ判別可能
  • 判定可能なMacOSのバージョン自体は大体10.5(Leopard)以上ぐらい(ブラウザによって異なる)
  • メンテナンスバージョン部分はFirefoxの場合取れない

サンプルコードはこちら。Mac環境の方がアクセスしたらなんとなく表示されます。

関連記事

no image

IEでもconsole.log()を書いておいてエラーを出さない方法。

javascriptでWebアプリ開発してると「IEでチェック」というタームがくるかと思います。

記事を読む

no image

JavaScriptでonclickなどのevent処理を高速に処理させる簡単な方法

どもです、manji6です。 node.jsみたいなサーバー側言語を触りたいなと思いつつ、ほと

記事を読む

JavaScriptの読み込み高速化方法についてまとめてみた

今日はJavaScriptの読み込み高速化手法についていろいろと調べていたのでまとめておきたいと思い

記事を読む

Target:mbox

自腹で購入した商品色々レビュー中!

商品紹介・レビュー記事特集!

Target:static mbox(mbox create

no image
Nintendo Switch で使える激安USB 3.0ケーブル

Nintendo Switchを買いました!とりあえず色々まずはやって

AMPで作ったページを実際にGoogle検索結果経由でみた時と同じキャッシュ表示にする方法

今日は技術的な話。AMPページ対応を行った人も最近増えてきたと思うので

分散投資ロボアドバイザーのTHEOを大体半年間回したら利率10%近くまでになったので、トランプさんありがとうと思った

(こちらの記事は私が独自に当サービスを使ってみた結果の報告です。特にT

Macでの作業効率アップ!nativefierを使ってWebアプリをアプリケーション化

Console heaven / bartosz.maciejew

no image
2016年の目標

新年明けましておめでとうございます。 年末年始は色々とバタバタしまし

→もっと見る

PAGE TOP ↑