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

Archives Details

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

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

JavaScriptで、DOMを放り投げる処理

2024.07.27

2022 VIVA JS World Cup 開幕!! 〜 Vue3で作るサッカーゲーム 〜

2022.12.24

OAuthのフローを可視化できるツールを作ってみました。

2020.05.17

令和の時代に、JavaScriptで Shift-JISファイル作成 全銀データフォーマットに対応する。

2020.03.03

インターネットにて世論調査を行う「世論Web」サービスを始めてみました。

2020.01.31

年末のレトロゲーム熱の際、ファミコンソフト一覧パッケージ作ってました。

2020.01.24

あと10日で「jsdo.it」のサービスが終わってしまう!! ソースダウンロードまだの方は急げぇ〜!

2019.10.21

正規表現 先読み後読み 論理積

2019.07.28

「二段階認証?」という方も 5分で覚える パスワードレス WebAuthnのまとめ

2019.07.07

上級者向け JavaScript 問題集 「javascript-questions」日本語翻訳担当してます。

2019.06.22

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