2012-09-20 17 views
5

questionは、iPhone 4ユーザエージェントとiOS 5.0ユーザエージェントについてSOの質問を受けました。iPhone 5とその下のiOSデバイスを検出する

私は以下を使用して、さまざまなモバイルデバイス、ビューポート、および画面を検出します。

iPhone 5と他のすべてのiOSデバイスを区別したいと思います。私が知る限り、iOS 5.0ユーザーエージェントvar iPhone5を検出するために使用している行は、iOS 5.0を実行しているすべてのiOSデバイスにも適用されるため、技術的に間違っています。

var pixelRatio = window.devicePixelRatio || 1; 

var viewport = { 
    width: window.innerWidth, 
    height: window.innerHeight 
}; 

var screen = { 
    width: window.screen.availWidth * pixelRatio, 
    height: window.screen.availHeight * pixelRatio 
}; 

var iPhone = /iPhone/i.test(navigator.userAgent); 
var iPhone4 = (iPhone && pixelRatio == 2); 
var iPhone5 = /iPhone OS 5_0/i.test(navigator.userAgent); // ? 
var iPad = /iPad/i.test(navigator.userAgent); 
var android = /android/i.test(navigator.userAgent); 
var webos = /hpwos/i.test(navigator.userAgent); 
var iOS = iPhone || iPad; 
var mobile = iOS || android || webos; 

window.devicePixelRatioデバイス上の物理的な画素と、デバイスに依存しない画素(ディップ)との比です。 window.devicePixelRatio =物理ピクセル/ディップ。

詳細情報here

あなたは、画面のオブジェクトに基づいて検出されないのはなぜ
+1

@nhahtdh:まあ、それはないiPhone 5は覚えているのiOS 5.0ユーザーエージェントだ、のiOS 5.0は、iPhone 5を含む任意のiOSデバイス上で実行することができ、しかし、私は思いますiPhone 4とiPhone 5を区別するのが好きです。 – fuzz

+0

@nhahtdh:なぜあなたはコメントしてから投票を終了するのですか?また、理由を与えるために気をつけますか? – fuzz

+0

あなたが尋ねていることを注意深く読まなくても、ひどい反応でした。 – nhahtdh

答えて

11

-

screen.availWidth 
screen.availHeight 

私のiPhone 5には、非網膜形でその解像度である320の幅と高さ548を、報告します。

ビューポートサイズを報告するため、window.innerWidthとwindow.innerHeightを使用しないでください。ページがズームインされている場合は、使用可能な画面のサイズではなく、ズームインされた領域のサイズがレポートされます。

+0

これは548ではなく568です。 – ForNeVeR

2

2行は十分にある。

var iphone4 = (window.screen.height == (960/2)); 
var iphone5 = (window.screen.height == (1136/2)); 
+0

ユーザエージェントの検出も必要です。画面サイズだけでは不十分です。 –

関連する問題