Вопрос по iphone, ios5, javascript, user-agent, ios4 – Обнаружение 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 = физические пиксели / провалы.

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

Это была реакция коленного рефлекса без тщательного прочтения того, о чем вы спрашиваете. nhahtdh
@nhahtdh: Хорошо, это пользовательский агент iOS 5.0, а не iPhone 5. Помните, iOS 5.0 может работать на любом устройстве iOS, включая iPhone 5, однако я бы хотел, например, различать iPhone 4 и iPhone 5 , fuzz
@Fulvio Ding Ding Ding! ;) Jonathan Grynspan
@nhahtdh: Зачем вы комментируете, а затем голосуете, чтобы закрыть? Кроме того, хотите дать причину? fuzz
@JonathanGrynspan: Ширина экрана для 2D-игры с боковой прокруткой для ландшафтной платформы, которую я разрабатываю. ;-) Я думаю, что я только что ответил на свой вопрос. Я буду использовать ширину экрана для обнаружения.slaps face fuzz

Ваш Ответ

2   ответа
3

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

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

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

screen.availWidth
screen.availHeight

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

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

Это 568, а не 548.

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