Обнаружение планшетов и телефонов, htaccess или CSS - PullRequest
3 голосов
/ 06 июля 2011

Хорошо, я изучал это некоторое время и, кажется, есть несколько способов сделать это, медиазапросы CSS, которые определяют размер экрана, htaccess и javascript.

Я бы предпочел пойти по пути htaccess, потому что, насколько я знаю, планшеты теперь имеют разрешение 1024 пикселей. Не помешает ли это разрешению рабочего стола? Кроме того, htaccess дает мне возможность создать совершенно новый сайт для планшетов и мобильных браузеров, но как мне узнать, планшет это или мобильный? Я не хочу определять, является ли это Google Nexus против HTC Desire или iPhone, в сравнении с iPad, Acer Iconia, Xoom и т. Д.

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

Ответы [ 2 ]

6 голосов
/ 06 июля 2011

Я бы предложил использовать Modernizr для этого.

Он использует Javascript в браузере клиента для определения поддержки всего спектра функций браузера, включая сенсорные события, и предоставляет вам CSS-классы и объект Javascript, которые можно использовать для настройки вашего сайта в соответствии с браузером пользователя.

Я бы всегда избегал обнаружения браузера на сервере (т. Е. В .htaccess или в коде на стороне сервера), потому что он ненадежен - данные, которые сервер может использовать для обнаружения клиентской среды, отправляются в виде простого текста и легко подделан или взломан. Что еще более важно, это также обычно подавляется прокси и приложениями конфиденциальности.

2 голосов
/ 07 июля 2011

Если вы хотите обнаружить мобильный браузер, используя .htaccess, вам придется перечислить их имена (по крайней мере, наиболее уникальную часть).Это можно сделать с помощью одного правила перезаписи, например (взято из другого вопроса о SO):

RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC]
RewriteCond %{REQUEST_URI} !^/mobile.php
RewriteRule .* /mobile.php?url=%{REQUEST_URI} [L]
...