ktty1220 / browser-detector.js

UserAgentに依存しないブラウザ判定JavaScript

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

browser-detector.js

UserAgentに依存しないブラウザ判定JavaScript

ブラウザが提供している機能を調べてブラウザの種類やバージョンを判定し、<html>タグにクラス名として判定結果を付加するJavaScriptライブラリです。

UserAgentの文字列は参照せずに判定しているので、仮にUserAgentを偽装していても正確なブラウザ判定が可能です。

軽量なので、Modernizrほどがっつり判定しなくてもいいという状況で有効かもしれません。

DEMO

簡単なデモ

使用方法

jsディレクトリ内のbrowser-detector.js(もしくはface-emotion.min.js)をHTML内で読み込みます。

<script type="text/javascript" src="/path/to/browser-detector.js"></script>

以上です。

※ <html>タグにクラスを付加するという性格上、早い段階でロードした方が良いと思われます。

ちょっとだけModernizrっぽい実装

htmlソースの段階で以下の様にno-jsというクラスを付けておくと、browser-detector.jsロード時にjsという名前に変更します。

<html lang="ja" class="no-js">

実行後

<html lang="ja" class="js gecko firefox modern">

これはJavaScriptが実行できる環境ですという意味を表します。このクラス名がno-jsのままの場合、browser-detector.jsがロードされたのにもかかわらず実行されていないという事になり、そのブラウザではJavaScriptが無効にされているという事になります。

例: IE8での実行例

<html class="js ie ie8 lt-ie9 lt-ie10 lt-ie11 old-ie" ...

クラス名の説明

ie

すべてのバージョンのIEに付加されます。

ie6 ~ ie11

IEの各バージョンに応じた数字が入ります。

※ IE6未満には付加されませんが、lt-ie6で判定できます。

lt-ie6 ~ lt-ie11

特定のIEのバージョン未満を表すクラス名です。

※ IE7ならlt-ie8lt-ie9lt-ie10lt-ie11が付加されます。

old-ie

IE8以下のブラウザである事を表します。

modern

old-ie以外のブラウザ(IE9以上、Chrome、Firefoxなど)に付加されます。

gecko firefox

FirefoxもしくはGeckoエンジンで動作しているブラウザです。

blink chrome

GoogleChromeもしくはBlinkエンジンで動作しているブラウザです。新Operaもこちらに含まれます。

presto opera

旧Operaです(Prestoエンジン)。

webkit safari

上記以外のWebkitエンジンで動作しているブラウザ(Safariなど)です。

mobile

スマートフォンやタブレットなどのモバイルデバイスです。

touch

タッチ操作対応デバイスです(デスクトップも含まれます)。

謝辞

Changelog

0.1.1 (2014-07-31)

0.1.0 (2013-11-05)

  • 初版リリース

ライセンス

MIT licenseで配布します。

© 2013 ktty1220

About

UserAgentに依存しないブラウザ判定JavaScript


Languages

Language:JavaScript 100.0%