Как лучше всего определить, является ли клиент планшетом или телефоном?

В настоящее время я разрабатываю клиентское приложение, которое будет предназначено как для смартфонов, так и для планшетов. Поэтому он получит два разных режима компоновки.

Хотя пользователь сможет переключаться между двумя режимами, мне придется предварительно установить режим при первом использовании приложения.

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

Я мог бы проверить разрешение браузера, но я не уверен, что это правильный путь в Рим, так как разрешение iPhone 4 с разрешением 960x640 пикселей почти такое же, как разрешение экрана iPad с разрешением 1024x768, и иметь в виду устройства Android. .

Какие-либо предложения?


person asp_net    schedule 16.06.2011    source источник


Ответы (4)


Вы можете определить, является ли это телефоном, используя скрипт http://detectmobilebrowser.com/. Если нет, вы можете предположить, что это планшет (поскольку, как вы упомянули, настольные браузеры не имеют значения для этого приложения).

person Jason Gennaro    schedule 16.06.2011
comment
О, ты прав. Думал, что он обнаружит iPad как мобильное устройство, но это не так. Так что я пойду с ним. - person asp_net; 16.06.2011

Я бы выбрал определение разрешения экрана, так как на самом деле не имеет значения, является ли браузер телефоном или планшетом, единственное, что должно влиять, это макет. И лучше всего определить, какой размер макета использовать, это разрешение.

person Adam Heath    schedule 16.06.2011
comment
Сложно провести границу и определить, где заканчивается разрешение экрана смартфона и начинается разрешение планшета. - person asp_net; 16.06.2011

Один из способов сделать это — проверить пользовательский агент.

var UA = navigator.userAgent;
if (UA.indexOf("iPad") != -1) {
    // iPad
} else if (UA.indexOf("iPhone") != -1) {
    // iPhone
}
person Will    schedule 16.06.2011
comment
Поскольку я поддерживаю более двух типов устройств Apple, это становится очень сложно сделать (подумайте обо всех устройствах Android). - person asp_net; 16.06.2011
comment
Да, вам придется протестировать другие устройства; Я использовал iPad и iPhone в качестве примера. Вероятно, существует какой-то сценарий обнаружения мобильного браузера. Я бы выбрал разрешение экрана (поскольку существует так много разных устройств). - person Will; 16.06.2011

+1 за тестирование разрешения экрана, а не пользовательского агента (и iPhone против iPad в любом случае очень упрощенный тест — как насчет всех этих других планшетных устройств ??)

С точки зрения тестирования для iPhone 4, т.е. дисплеев Retina, этот тест должен работать в вашем Javascript:

if(window.devicePixelRatio > 1){
    // Retina device...
person Ben    schedule 16.06.2011