このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

スマートフォン JavaScript ユーザーエージェント振分け

スマートフォン

2011.08.18

この記事は最終更新日から1年以上が経過しています。

JavaScriptを用いて、「ユーザーエージェント」の振り分けの方法です。

ユーザーエージェントとはwebブラウザーや検索エンジンのクローラーといったwebサイトへアクセスするプログラムのことをいうのですが、web制作では一般的に「webブラウザーがHTTP通信時にサーバーへ送信する固有の文字列情報」のことを指します。

iPhone 、iPadのユーザーエージェント

iPhone4 :iOS4

Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7

iPhone3G/3GS : iOS4

Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7

iPad :iPhoneOS3.2

Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7W367a Safari/531.21.10

iPhone3G : iPhoneOS3.1.3

Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_3 like Mac OS X; ja-jp) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7E18 Safari/528.16

これらの文字列を取得し、javascriptを用いて振り分けを行います。

JavaScriptでは

navigator.userAgent

で取得できます。

取得したユーザーエージェント文字列に「iPhone」「Android」が含まれているか?をindexOf()メソッドで判断します。

まず、iPhoneかどうか

1.ユーザーエージェント取得 iPhone

例:

if(navigator.userAgent.indexOf('iPhone') > 0){
alert("あなたのデバイスはiPhoneです。");
}else{
alert("あなたのデバイスはiPhoneではないです。");
}

indexOf()メソッドは、指定したキーワードを発見すると文字列中の位置を、

発見できないと「-1」の数値を返します。

これを利用し、値が0より上であればキーワード発見(iPhoneでのアクセス)

と判断できます。

iPhoneだと0以上、他デバイスだと-1の値

2.ユーザーエージェント取得 iPhone or Android

デモページ

続いて、Androidかどうかも navigator.userAgent.indexOf(‘Android’)で取得できます。

例:

if(navigator.userAgent.indexOf('iPhone') > 0){
alert("あなたのデバイスはiPhoneです。");
}if(navigator.userAgent.indexOf('Android') > 0){
alert("あなたのデバイスはAndroidです。");
}if(navigator.userAgent.indexOf('iPhone') == -1 && device.indexOf('Android') == -1){
alert("あなたのデバイスはiPhoneでもAndroidでもないです。");
}

iPhoneの場合は indexOf(‘iPhone’)の値は0以上、

Androidの場合はindexOf(‘Android’)の値は0以上、

どちらでもない場合はindexOf(‘iPhone’)、indexOf(‘Android’)の値はともに-1となります。

デモページ

最後にiPod touchも含め、iPadを含めないスクリプトの方法です。

iPadはディスプレイサイズが大幅に異なるためスマートフォン同様の表示だと逆に見づらくなってしまうことがあるためPC同様の扱いで振り分けを行います。

iPod touchはiPhone,Android端末と同じ様な表示が実現できるため、同じ「スマートフォン」という括りにします。

iPod touchのアクセスでは「iPod」というキーワードが含まれるのが特徴です。

また、iPadのユーザーエージェント文字列にはキーワード「iPad」しかないので問題はないのですが、初期のiPadのユーザーエージェント文字列では「iPhone OS」というキーワードが含まれていました。

このキーワードiPhoneという文字列を取得し、iPhoneだと誤認識するのを避けるようにスクリプトを記述します。

var device = navigator.userAgent;
if((device.indexOf('iPhone') > 0 && device.indexOf('iPad') == -1) ......

短縮するため var device = navigator.userAgent;で変数deviceに代入しております。

iPhoneの値が0以上かつiPadの値が-1 の時「iPhone」

3.ユーザーエージェント取得 スマートフォン

例:

var device = navigator.userAgent;
if((device.indexOf('iPhone') > 0 && device.indexOf('iPad') == -1) || device.indexOf('iPod') > 0 || device.indexOf('Android') > 0){
alert("あなたのデバイスはスマートフォン(iPod touchを含む)です。");
}else{
alert("あなたのデバイスはスマートフォン(iPod touchを含む)ではないです。");
}

さらにiPodの値が0以上の時、Androidの値が0以上の時いずれかの条件の時「スマートフォン」と判別します。

jQueryも含めたデモはこちらから。

デモページ

以上になりまーす。

デモページ

Comment

Related Article

「Band’s」スマートフォン版リリースしました!

2015.06.24

スマートフォンサイト制作における SCSSディレクトリ構成、Class命名について

2014.06.01

ドラクエモンスターズ スーパーライト ジェム 50,000円分 無料GET!! と謳っている【manekin】(マネキン)をやってみた!

2014.05.24

HTML5 WebビューApp ソーシャルゲーム制作時のまとめ

2013.08.17

スマートフォン タッチイベント、距離、速さ等確認ページ

2013.03.07

weinreでiPhone/Androidをリモートデバック

2013.01.27

translateプロパティでAndroid,iPhone端末で画像がちらつく件

2012.09.13

CSS3 アイコン作成 背景指定1つ 光彩グラデーションの表現

2012.05.19

スマートフォン JavaScript タッチ、フリックイベント実装その2 「ボールを投げる」

2012.02.18

スマートフォン JavaScript タッチ、フリックイベント実装

2012.02.18

CATEGORY LIST

LATEST NEWS

Rustでつくる ふっかつのじゅもん

Rust

2025.04.29

Tauri(Rust) × AI で作る GitGUIクライアントアプリ その5

Rust

2025.04.14

う、動くぞ! Mac mini Apple M4 Pro で PS3ソフトを遊ぶ。RPCS3 Mac版を起動

Game

2025.04.12

Tauri(Rust) × AI で作る GitGUIクライアントアプリ その4

Rust

2025.04.10

Tauri(Rust) × AI で作る GitGUIクライアントアプリ その3

Rust

2025.04.08

Tauri(Rust) × AI で作る GitGUIクライアントアプリ その2

Rust

2025.04.07

時代を先取りし過ぎた ニューラルネットワークが導入されたゲーム『がんばれ森川君2号』を令和に嗜んでみる。

Game

2025.04.06

Tauri(Rust) × AI で作る GitGUIクライアントアプリ その1

Rust

2025.04.05

keyring-rsで、Macのキーチェーンに登録する。

Rust

2025.04.04

RustとWebAssemblyによるゲーム開発 Webpack5対応

Rust

2025.03.27

Rustで創る MOS 6502 CPU その3 (Cursorと共に)

Rust

2025.02.24

あけましておめでとうございます(24日経過)

イベント

2025.01.24

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US