2012-09-20 13 views
5

È stato chiesto a SO l'agente utente di iPhone 4 e l'agente utente iOS 5.0, un question.Rilevamento di iPhone 5 e di qualsiasi dispositivo iOS sotto di esso

Io uso quanto segue per rilevare diversi dispositivi mobili, finestra e schermo.

Mi piacerebbe essere in grado di distinguere tra l'iPhone 5 e tutti gli altri dispositivi iOS. Per quanto ne so, la linea che sto usando per rilevare l'agente utente di iOS 5.0 var iPhone5 si applicherebbe anche a qualsiasi dispositivo iOS con iOS 5.0, quindi tecnicamente non è corretto.

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 è il rapporto tra i pixel fisici e pixel indipendenti dal dispositivo (buchi) sul dispositivo. window.devicePixelRatio = pixel fisici/dips.

Ulteriori informazioni here.

+1

@nhahtdh: Beh, questo è il programma utente iOS 5.0 non l'iPhone 5. Ricordate, iOS 5.0 può essere eseguito su qualsiasi dispositivo iOS compreso l'iPhone 5, ma mi piacerebbe come per esempio distinguere tra un iPhone 4 e un iPhone 5. – fuzz

+0

@nhahtdh: Perché dovresti commentare e quindi votare per chiudere? Inoltre, ti interessa dare una ragione? – fuzz

+0

E 'stata una reazione istintiva senza leggere attentamente quello che stai chiedendo. – nhahtdh

risposta

11

Perché non rilevare in base all'oggetto schermo -

screen.availWidth 
screen.availHeight 

Sul mio iPhone 5 si riferisce 320 di larghezza e 548 di altezza, che è la sua risoluzione in una forma non-retina.

NON si deve utilizzare window.innerWidth e window.innerHeight a causa di esso che riporta la dimensione della finestra. Se la pagina viene ingrandita, segnalerà la dimensione dell'area ingrandita e non la dimensione corretta dello schermo disponibile.

+0

Questo è 568, non 548. – ForNeVeR

2

2 righe sono sufficienti:

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

È inoltre necessario il rilevamento di agente utente. La dimensione dello schermo da sola non è sufficiente. –

Problemi correlati