HTML-CSS 入門講座

HTML-CSS 入門講座

こんにちは!
今日も頑張ろう

端末やブラウザ情報の取得

説明

概要

使用している端末やブラウザの情報(種別)を取得する方法を説明します。

【注意】
ここでの説明は、ブラウザが提供する navigator.userAgent という情報を用いて判断しています。この方法は、ブラウザの将来のバージョンでも同様の情報を提供すると保障されているものではありません。また、ユーザーがこの値を変更することができる(UA なりすまし)ことも覚えておいてください。

取得できる情報は、以下の通りです。

■ブラウザ種別

  • IE
  • Edge
  • Chrome
  • Safari
  • Firefox

■端末 & OS 情報

  • iOS(OS が iOS)
  • iOS_SP(iOS のスマホ)
  • iOS_TB(iOS のタブレット)
  • Android(OS が Android)
  • Android_SP(Android のスマホ)
  • Android_TB(Android のタブレット)
  • SP(スマホ)
  • TB(タブレット)
  • iOS_Android(OS が iOS か Android)

(1) サンプル表示

以下の例では、OS が iOS か Android の場合に、body タグに sp クラス、それ以外の場合は、body ラグに pc クラスを付与しています。このクラス名を使用した CSS を記述することで端末によったデザインを変更することができます。例の中では、このクラスを使用して見出しの背景色を変更しています。

色々な端末で表示結果を確認してください。(別ウィンドウで表示します)

(2) ソースコード

ソースコード表示(装置やブラウザ情報の取得)

ソースコード


<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>端末情報取得サンプル</title>
<meta name="viewport" content="width=device-width,initial-scale=1.0,viewport-fit=cover">
<style>
* {
	padding: 0;
	margin: 0;
	word-wrap: break-word;
	box-sizing: border-box;
}
.container {
	padding: 10px;
	border: #fff 1px solid;
}
.wrapper {
	max-width: 760px;
	margin: 0 auto;
}

h1 {
	padding: 10px;
	margin-bottom: 20px;
	font-size: 1.6em;
	background: steelblue;
	color: #fff;
	text-align: center;
}
body.pc h1 {
	background: blue;
}
body.sp h1 {
	background: red;
}
dl {
	display: flex;
	flex-wrap: wrap;
}
dl dt {
	width: 220px;
	padding: 0 0 0 45px;
	font-size: 1.4rem;
	position: relative;
}
dl dt::before {
	content: "";
	width: 0;
	height: 0;
	border-top: 10px transparent solid;
	border-right: 16px transparent solid;
	border-bottom: 10px transparent solid;
	border-left: 16px #333 solid;
	display: block;
	position: absolute;
	top: 6px;
	left: 20px;
}
dl dd {
	width: calc(100% - 220px);
	font-size: 1.4rem;
}
.true {
	color: blue;
}
.false {
	color: red;
}
</style>
</head>

<body>

<div class="container">
	<div class="wrapper">
		<h1>端末情報</h1>
		<dl id="devInfoDisp">
		</dl>
	</div>
</div>

<script src="js/jquery-3.6.0.min.js"></script>
<script>

{
	// 端末情報の取得
	let devInfo_UA = navigator.userAgent.toLowerCase();
	// ブラウザ情報
	let devInfo_Ie = !!devInfo_UA.match(/(msie|trident)/i);
	let devInfo_Edge = !!devInfo_UA.match(/edge/i);
	let devInfo_Chrome = devInfo_Edge ? false : !!devInfo_UA.match(/(chrome|crios)/i);
	let devInfo_Safari = (devInfo_Edge || devInfo_Chrome) ? false : !!devInfo_UA.match(/safari/i);
	let devInfo_Firefox = !!devInfo_UA.match(/firefox/i);
	// 装置 & OS 情報
	let devInfo_iPhone = devInfo_UA.indexOf('iphone') >= 0;
	let devInfo_iPod = devInfo_UA.indexOf('ipod') >= 0;
	let devInfo_iPad = devInfo_UA.indexOf('ipad') >= 0;
	let devInfo_iOS = (devInfo_iPhone || devInfo_iPod || devInfo_iPad);
	let devInfo_Android = devInfo_UA.indexOf('android') >= 0;
	let devInfo_TB = (devInfo_iPad || (devInfo_Android && devInfo_UA.indexOf('mobile') < 0));
	let devInfo_SP = (!devInfo_TB && (devInfo_iOS || devInfo_Android));
	let devInfo = {
		// ブラウザ情報
		IE: devInfo_Ie,
		Edge: devInfo_Edge,
		Chrome: devInfo_Chrome,
		Safari: devInfo_Safari,
		Firefox: devInfo_Firefox,
		// 端末 & OS 情報
		iOS: devInfo_iOS,
		iOS_SP: (devInfo_iOS && devInfo_SP),
		iOS_TB: (devInfo_iOS && devInfo_TB),
		Android: devInfo_Android,
		Android_SP: (devInfo_Android && devInfo_SP),
		Android_TB: (devInfo_Android && devInfo_TB),
		SP: devInfo_SP,
		TB: devInfo_TB,
		iOS_Android: (devInfo_iOS || devInfo_Android)
	};
	// bodyタグにスマホやタブレットとパソコンの識別用クラスを付与する例
	if (devInfo.iOS_Android) {
		$('body').addClass('sp')
	}
	else {
		$('body').addClass('pc')
	}
	// 端末情報の表示
	let devInfoDisp = "";
	for (const devInfoKey in devInfo) {
		devInfoDisp += "<dt>" + devInfoKey + "</dt><dd class='" + devInfo[devInfoKey] + "'>" + devInfo[devInfoKey] + "</dd>\n";
	}
	$("#devInfoDisp").html(devInfoDisp);
}

</script>

</body>
</html>

ロケット本体
PAGE
TOP
ロケット炎