Вот 3 способа обнаружения мобильного телефона ...
- Браузер, поддерживаемый сообществом Сниффинг через проект WURFL
- Пользовательский браузерФырканье (то, что вы делаете сейчас, довольно распространенное, хотя и не считается лучшей практикой)
- Обнаружение с помощью поддержки функций.
Вариант 1 : вероятно, получитВы лучшая общая поддержка, если вы действительно ищете поддержку не-смартфонов.Это делается с помощью бэкэнда, проверяя пользовательский агент по огромной базе данных известных устройств, которая регулярно обновляется сообществом.Поскольку он не использует JavaScript, это, вероятно, лучший способ поддержки абсолютно всех.
Вариант 2 : Люди, не использующие смартфоны, знают, что просмотр веб-страниц на них - отстой.Поэтому они реже используют их для Интернета.Как процент трафика, процент людей, которых вы пропустите при использовании обнаружения в JavaScript, вероятно, не стоит того, чтобы о нем говорить.Для сайтов, которые я видел, это было менее 2% для BlackBerry 5 или старше и менее 1% для всего остального, кроме Android, iOS или BlackBerry 6+.Я поддерживал этот метод обнаружения раньше, и вот как я это сделал.Обратите внимание на допуск для любой опции, основанной на webkit, при условии, что экран маленький (isUnknownMobile)Это попытка проверки в будущем до тех пор, пока такая платформа не сможет набрать достаточную тягу для вызова.
<script>
var agent = navigator.userAgent;
var isWebkit = (agent.indexOf("AppleWebKit") > 0);
var isIPad = (agent.indexOf("iPad") > 0);
var isIOS = (agent.indexOf("iPhone") > 0 || agent.indexOf("iPod") > 0);
var isAndroid = (agent.indexOf("Android") > 0);
var isNewBlackBerry = (agent.indexOf("AppleWebKit") > 0 && agent.indexOf("BlackBerry") > 0);
var isWebOS = (agent.indexOf("webOS") > 0);
var isWindowsMobile = (agent.indexOf("Windows Phone OS") > 0);
var isSmallScreen = (screen.width < 767 || (isAndroid && screen.width < 1000));
var isUnknownMobile = (isWebkit && isSmallScreen);
var isMobile = (isIOS || isAndroid || isNewBlackBerry || isWebOS || isWindowsMobile || isUnknownMobile);
var isTablet = (isIPad || (isMobile && !isSmallScreen));
function mobileRedirect(mobileView){location.replace((mobileView)?mobileView:"/mobile/index.jsp");}
</script>
Опция 3 : Обнаружение функции, вероятно, является гораздо более надежным способом тестирования в будущемесли клиент мобильный.Попробуйте использовать Modernizr Project , чтобы узнать, какие функции поддерживаются.Например, если устройство имеет небольшой экран и поддерживает холст, или если оно имеет сенсорный интерфейс, они, вероятно, являются мобильными.Опять же, это обнаружение на основе интерфейса и опирается на JavaScript.
Если вы действительно хотите перенаправить ВСЕХ, кто является мобильным, проект WURFL - ваш лучший выбор.