2012-09-20 11 views
5

Na komputerze SO zadano pytanie dotyczące agenta użytkownika iPhone 4 i agenta użytkownika iOS 5.0.Wykrywanie iPhone'a 5 i dowolnego urządzenia z systemem iOS pod nim

Używam następujących elementów do wykrywania różnych urządzeń mobilnych, rzutni i ekranu.

Chciałbym móc odróżnić iPhone'a 5 od wszystkich innych urządzeń z systemem iOS. O ile mi wiadomo, linia, której używam do wykrywania agenta użytkownika systemu iOS 5.0 var iPhone5, miałaby również zastosowanie do dowolnego urządzenia iOS 5.0 z systemem iOS, więc pod względem technicznym jest niepoprawne.

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 jest stosunek fizycznych pikseli oraz pikseli niezależny od urządzenia (dipów) na urządzeniu. window.devicePixelRatio = fizyczne piksele/spadki.

Więcej informacji here.

+1

@nhahtdh: Dobrze, że to agent użytkownika iOS 5.0 nie iPhone 5. Pamiętaj, iOS 5.0 można uruchomić na dowolnym urządzeniu z iOS w tym iPhone 5, jednak ja lubię rozróżniać iPhone'a 4 i iPhone'a 5 na przykład. – fuzz

+0

@nhahtdh: Dlaczego chcesz komentować, a następnie głosować, aby zamknąć? A także, czy chcesz podać powód? – fuzz

+0

To była odurzona reakcja bez uważnego czytania o co pytasz. – nhahtdh

Odpowiedz

11

Dlaczego nie można wykryć na podstawie obiektu ekranem -

screen.availWidth 
screen.availHeight 

Na moim iPhone 5 zgłasza 320 szerokości i 548 wysokości, która jest jego rozdzielczość w formie non-siatkówki.

NIE należy używać window.innerWidth i window.innerHeight z powodu raportowania rozmiaru rzutni. Jeśli strona jest powiększona, wyświetli rozmiar powiększonego obszaru, a nie odpowiedni rozmiar dostępnego ekranu.

+0

To 568, a nie 548. – ForNeVeR

2

2 linie są wystarczająco:

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

Potrzebne jest również wykrywanie klienta użytkownika. Sam rozmiar ekranu nie jest wystarczający. –

Powiązane problemy