LoginSignup
17
17

More than 5 years have passed since last update.

UAを参照しないでブラウザを判定する方法

Last updated at Posted at 2012-11-22

navigator.userAgentに頼らず判定したい場合のスクリプト。

デモページ

var w = window,
    d = w.document,
    dE = d.documentElement,
    unavailableQuerySelector = isUndefined(d.querySelector),
    unavailablePerformance = isUndefined(w.performance),
    isIE = !isUndefined(d.uniqueID),
    ltIE6 = isIE && isUndefined(dE.style.maxHeight),
    ltIE7 = isIE && unavailableQuerySelector,
    ltIE8 = isIE && isUndefined (d.getElementsByClassName),
    ltIE9 = isIE && isUndefined(w.Worker),
    isIE6 = isIE && ltIE6,
    isIE7 = isIE && ltIE7 && !ltIE6,
    isIE8 = isIE && ltIE8 && !ltIE7 && !ltIE6,
    isIE9 = isIE && ltIE9 && !ltIE8 && !ltIE7 && !ltIE6,
    isIE10 = isIE && !ltIE9 && !ltIE8 && !ltIE7 && !ltIE6,
    isMoz = !isIE && !isUndefined(w.sidebar),
    ltFirefox3 = isMoz && unavailableQuerySelector,
    ltFirefox36 = isMoz && isUndefined(w.ArrayBuffer),
    ltFirefox6 = isMoz && unavailablePerformance,
    isOpera = !isIE && !isUndefined(w.opera),
    isWebkit = !isIE && !isMoz && !isOpera && !isUndefined(d.querySelectorAll),
    isMobileWebkit = isWebkit && !isUndefined(w.ontouchstart),
    isChrome = isWebkit && !unavailablePerformance && ! isUndefined(w.EventSource),
    isSafari = isWebkit && !isChrome,
    ltSafari4 = isSafari && isUndefined(w.matchMedia),
    ltSafari5 = isSafari && isUndefined(w.FileReader),
    isSafari4 = isSafari && ltSafari4,
    isSafari5 = isSafari && ltSafari5 && !ltSafari4,
    isSafari6 = isSafari && !ltSafari5 && !ltSafari4,
    isMobileChrome = isChrome && isMobileWebkit,
    isMobileSafari = isSafari && isMobileWebkit,
    support = {
        isIE: isIE,
        ltIE6: ltIE6,
        ltIE7: ltIE7,
        ltIE8: ltIE8,
        ltIE9: ltIE9,
        isIE6: isIE6,
        isIE7: isIE7,
        isIE8: isIE8,
        isIE9: isIE9,
        isIE10: isIE10,
        isMoz: isMoz,
        ltFirefox3: ltFirefox3,
        ltFirefox36: ltFirefox36,
        ltFirefox6: ltFirefox6,
        isOpera: isOpera,
        isWebkit: isWebkit,
        isChrome: isChrome,
        isSafari: isSafari,
        ltSafari4: ltSafari4,
        ltSafari5: ltSafari5,
        isSafari4: isSafari4,
        isSafari5: isSafari5,
        isSafari6: isSafari6,
        isMobileWebkit: isMobileWebkit,
        isMobileChrome: isMobileChrome,
        isMobileSafari: isMobileSafari
    };

function isUndefined (value, undefined) {
    return value === undefined;
}

console.log(support);

isMobileWebkitisMobileSafariAndroidBlackBerryにもtrueを返します。
検証環境が整っていないので、整い次第追加したいです。

そして各ブラウザがアップデートされる度に更新しないとエラいことになるので気をつけて使用しなければなりません。

ご指摘大歓迎ヽ(´ー`)ノ


参考にしたサイト

http://w3g.jp/blog/tools/js_browser_sniffing
http://d.hatena.ne.jp/Naotsugu/20110927/1317140891
http://caniuse.com/

17
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17