Вопрос по iphone, user-agent, javascript, ios4, ios5 – Обнаружение iPhone 5 и любого устройства iOS под ним

5

вопрос спросили на SO о пользовательском агенте iPhone 4 иiOS 5.0 пользовательский агент.

Я использую следующее для обнаружения различных мобильных устройств, области просмотра и экрана.

Я хотел бы иметь возможность различать iPhone 5 и все другие устройства iOS. Насколько я знаю, линия яиспользую для обнаружения пользовательский агент iOS 5.0var iPhone5 также применимо к любому устройству iOS под управлением iOS 5.0, так что техническиневерно

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 = физические пиксели / провалы.

Больше информацииВот.

@Fulvio Ding Ding Ding! ;) Jonathan Grynspan
@ Фульвио Да, ноЗачем ты хочешь сделать это? Что вы будете делать по-другому для iPhone 5? Jonathan Grynspan
@JonathanGrynspan: Ширина экрана для 2D-игры с боковой прокруткой для ландшафтной платформы I 'м развивается. ;-) Я думаю я'Мы только что ответили на мой вопрос. Я'Я буду использовать ширину экрана для обнаружения.шлепает лицо fuzz
Это была реакция коленного рефлекса без тщательного прочтения того, о чем вы спрашиваете. nhahtdh

Ваш Ответ

2   ответа
11

Почему Дон'вы обнаруживаете на основе объекта экрана -

screen.availWidth
screen.availHeight

На моем iPhone 5 он сообщает 320 ширину и 548 высоту, что является его разрешением в форме без сетчатки.

Вы не должны использовать window.innerWidth и window.innerHeight, так как он сообщает о размере области просмотра. Если страница увеличена, она сообщит о размере увеличенной области, а не о надлежащем размере доступного экрана.

Тот'с 568, а не 548. ForNeVeR
3

2 строки достаточно:

var iphone4 = (window.screen.height == (960 / 2));
var iphone5 = (window.screen.height == (1136 / 2));
Вам также необходимо обнаружение агента пользователя. Одного размера экрана недостаточно. posit labs

Похожие вопросы