25
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?