2009-07-13 3 views
19

У нас есть альтернативная версия готового сайта для мобильных устройств. Контент, который мы обслуживаем, отличается и работает хорошо.Переадресовать мобильные устройства на альтернативную версию моего сайта

Каков наилучший способ определения версии для обслуживания. У нас нет списка всех мобильных устройств, поэтому использовать заголовок user-agent сложно, поскольку мы можем что-то пропустить.

Мы думали об использовании ширины экрана устройства - но что произойдет, если мобильное устройство не поддерживает javascript. Как мы это нюхаем?

ответ

24

Вы можете использовать базу данных описания устройства (например, WURFL), которая распознает клиентское устройство из заголовков запросов. Затем вы можете запросить эту базу данных, чтобы решить, может ли устройство обрабатывать ваш сайт (например, поддерживать javascript или достаточно большой экран), прежде чем принимать решение о перенаправлении их на другой сайт.

Вы не упомянули о своей среде, но WURFL поставляет API для Java и PHP, а также другие. Если API не поставляется, вы все равно можете использовать WURFL, но вам придется самостоятельно анализировать и обрабатывать данные XML.

+2

Не знаю, шляпа вещь, которая существует. Гораздо лучше, чем мое решение –

2

Я не думаю, что есть хороший/элегантный способ определить, активирован ли пользователь javascript.

IMO, лучше всего перечислить агент: here - это список User-Agent, который кажется вполне полным (по-французски, к сожалению).

+0

http://www.user-agents.org/ – abatishchev

0

Согласен с Skaffman, другая база данных устройства - DeviceAtlas. Вы должны заплатить за это, хотя.

0

Простой:

<link rel="alternate" media="handheld" href="WEBSITE HERE"> 

положить, что в головной части.

+0

-1 iPhone/iPod Touch и другие смартфоны не почитают тип «handheld». Они хотят отображать обычную версию сайта: это означает, что вам необходим какой-либо * другой механизм для обнаружения мобильного браузера. –

+1

Это не метод обнаружения, это способ семантически рассказать браузеру, где найти мобильный сайт. – JKirchartz

+1

Но это было бы неплохо, ИМО, если бы мобильные браузеры стандартизировали бы соблюдение разметки, например, отображая диалог, спрашивающий, хочет ли пользователь мобильную версию сайта и предлагает ли запомнить этот выбор. – dbreaux

8

media = "handheld" не работает с современными смартфонами, такими как iphone, которые притворяются настольными браузерами (использует экранный медиа-тип).

http://detectmobilebrowser.com/ Free & с открытым исходным кодом, имеет комплексную проверку мобильного агента пользователя на многих языках - JavaScript, PHP, ASP.NET, рубина и т.д.

+0

Разве это не плохо для SEO, поскольку он перенаправляет на detectmobilebrowser.com в первую очередь? –

+2

На самом деле вы должны изменить эту часть кода так, чтобы она читала * firecoding.com * вместо этого ;-) – JoshuaDavid

+0

@FireCoding - самый проницательный комментарий, который я когда-либо видел :) –

0

Если устройство не поддерживает JS, то лучше рассмотреть решение на стороне сервера, и WURFL API может помочь в этом направлении.

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

По этой причине я написал сценарий JS под названием «redirection_mobile.js», который обнаруживает агент пользователя браузера и перенаправляет на мобильную версию вашего сайта, если вы обращаетесь к нему с мобильного устройства.

В некоторых случаях вы хотите перенаправить с мобильного устройства на настольную версию (например, со ссылкой «Перейти на главный сайт»), сценарий будет обрабатывать это, и как только вы закончите свой сеанс, вы получите доступ к мобильную версию снова.

Вы можете найти исходный код на GitHub здесь http://github.com/sebarmeli/JS-Redirection-Mobile-Site и вы можете прочитать более подробную информацию в одном из моей статьи здесь:

http://blog.sebarmeli.com/2010/11/02/how-to-redirect-your-site-to-a-mobile-version-through-javascript/

3

Просто поместите это в заголовке:

<script type="text/javascript"> 
<!-- 
    if (screen.width <= 700) { 
    window.location = "http://www.mobile-site.com"; 
    } 
//--> 
</script> 

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

+1

Обычный ipad имеет разрешение 1024x768, ipad retina is дважды это. Поэтому я опасаюсь полагаться на это. – anyeone

+0

И с 2015 года этот ответ устарел. – Martijn

2

Альтернативой WURFL является Mobile Detect, класс PHP для обнаружения:

  • Tablet
  • Mobile
  • Ios
  • Android
  • Браузеры
  • И многое другое

Итак, в случае, если WURFL не делает то, что вам нужно, вы всегда можете это проверить.

5

Если вы хотите перенаправить на мобильный сайт с использованием JavaScript, я заметил, что у WURFL также есть решение, позволяющее выполнять обнаружение на стороне сервера с помощью JavaScript.

<script type='text/javascript' src="//wurfl.io/wurfl.js"></script> 

ты останешься с объектом JSON, который выглядит как:

{ 
    "complete_device_name":"Apple iPhone 6", 
    "is_mobile":true, 
    "form_factor":"Smartphone" 
} 

Вы можете использовать это:

if (WURFL.is_mobile === true) { 
    window.location.replace("http://stackoverflow.com"); 
}