LoginSignup
25
25

More than 5 years have passed since last update.

JavaScriptでユーザーエージェントを取得しclassを付与する

Posted at

備忘録

JavaScriptでユーザーエージェントを取得しclassを付与する記述。

JSライブラリ依存せずに使用。

記述

ユーザーエージェントを取得しclassを付与

// 変数
var agent       = navigator.userAgent; // ユーザーエージェント
var htmlElement = document.documentElement; // html要素

// UserAgentで振り分けてhtmlにclassを振る
if (navigator.platform.search("Mac") != -1) { htmlElement.className += ' mac'; }
if(agent.search("Windows") != -1){
    htmlElement.className += ' win';
    if((agent.search("Trident") != -1) || ((agent.search("MSIE") != -1))) {
        htmlElement.className += ' ie';
        if(agent.search("Trident") != -1) { htmlElement.className += ' gte_ie8'; }
        if(agent.search("Trident") == -1) { htmlElement.className += ' lte_ie8'; }
        if(agent.search("MSIE 7") != -1){ htmlElement.className += ' ie7'; }
        if(agent.search("MSIE 8") != -1){ htmlElement.className += ' ie8'; }
        if(agent.search("MSIE 9") != -1){ htmlElement.className += ' ie9'; }
        if(agent.search("MSIE 10") != -1){ htmlElement.className += ' ie10'; }
        if(agent.search("Trident/7") != -1){ htmlElement.className += ' ie11'; }
    }
}
if((agent.search("Chrome") != -1) && (agent.search("OPR") == -1)){ htmlElement.className += ' chrome'; }
if((agent.search("Safari") != -1) && (agent.search("Chrome") == -1) && (agent.search("OPR") == -1) && (agent.search("Presto") == -1)) { htmlElement.className += ' safari'; }
if(agent.search("Firefox") != -1) { htmlElement.className += ' firefox'; }
if(agent.search("iPad") != -1){ htmlElement.className += ' ipad'; }
if(agent.search("iPhone") != -1){ htmlElement.className += ' iphone'; }
if(agent.search("Android") != -1){ htmlElement.className += ' android'; }

解説

コメントアウトで解説

// -------------------------------------------------------------------
// 変数
// -------------------------------------------------------------------
var agent       = navigator.userAgent; // ユーザーエージェント
var htmlElement = document.documentElement; // html要素

// UserAgentで振り分けてhtmlにclassを振る
// -------------------------------------------------------------------
// Mac のとき
if (navigator.platform.search("Mac") != -1) {
    htmlElement.className += ' mac';
}

// Windows のとき
if(agent.search("Windows") != -1){
    htmlElement.className += ' win';

    if((agent.search("Trident") != -1) || ((agent.search("MSIE") != -1))) { // Internet Explorer All
        htmlElement.className += ' ie';

        if(agent.search("Trident") != -1) { // IE8以上
            htmlElement.className += ' gte_ie8';
        }
        if(agent.search("Trident") == -1) { // IE7以下
            htmlElement.className += ' lte_ie8';
        }
        if(agent.search("MSIE 7") != -1){ // 一応IE7
            htmlElement.className += ' ie7';
        }
        if(agent.search("MSIE 8") != -1){ // IE8
            htmlElement.className += ' ie8';
        }
        if(agent.search("MSIE 9") != -1){ // IE9
            htmlElement.className += ' ie9';
        }
        if(agent.search("MSIE 10") != -1){ // IE10
            htmlElement.className += ' ie10';
        }
        if(agent.search("Trident/7") != -1){ // IE11
            htmlElement.className += ' ie11';
        }
    }
}

// Chrome のとき
if((agent.search("Chrome") != -1) && (agent.search("OPR") == -1)){
    htmlElement.className += ' chrome';
}
// Safari のとき
if((agent.search("Safari") != -1) && (agent.search("Chrome") == -1) && (agent.search("OPR") == -1) && (agent.search("Presto") == -1)) {
    htmlElement.className += ' safari';
}
// Firefox のとき
if(agent.search("Firefox") != -1) {
    htmlElement.className += ' firefox';
}

// iPad のとき
if(agent.search("iPad") != -1){ htmlElement.className += ' ipad'; }

// iPhone のとき
if(agent.search("iPhone") != -1){ htmlElement.className += ' iphone'; }

// Android のとき
if(agent.search("Android") != -1){ htmlElement.className += ' android'; }

使い方

上記をhtml内や外部JSなど任意の箇所に記述する。

自動でユーザーエージェントから指定のクラスを付与。

cssハックを使いたくない場合に使う。

例)macのchrome

<html lang="ja" class=" mac chrome">
<head></body>
<html>

例)win7のIE9

<html lang="ja" class=" win ie gte_ie8 ie9">
<head></body>
<html>

25
25
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
25
25