Как лучше всего определить, является ли клиент планшетом или телефоном? - PullRequest
2 голосов
/ 16 июня 2011

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

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

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

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

Есть предложения?

Ответы [ 4 ]

6 голосов
/ 16 июня 2011

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

2 голосов
/ 16 июня 2011

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

0 голосов
/ 16 июня 2011

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

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

if(window.devicePixelRatio > 1){
    // Retina device...
0 голосов
/ 16 июня 2011

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

var UA = navigator.userAgent;
if (UA.indexOf("iPad") != -1) {
    // iPad
} else if (UA.indexOf("iPhone") != -1) {
    // iPhone
}
...