2010-08-16 2 views
6

Я читал, что его плохое (не рекомендуется) использовать User Agent Sniffing для отправки правильного контента для мобильного браузера, так что мне интересно, что это лучший способ сделать это?Как определить мобильный браузер и направить на него соответствующий контент?

Я использую ASP.NET MVC, и я создал свой сайт, и он хорошо работает на настольных браузерах, поэтому я хочу начать создание мобильной версии. Когда мобильный браузер приходит на мой сайт, я хотел бы использовать другой набор представлений, которые в идеале обладает следующими атрибутами:

  1. Ссылки предварительно масштабируемые изображения
  2. Использования минимален JavaScript
  3. Удалить все, кроме существенного содержания

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

+1

Возможный дубликат [Обнаружение запросов от мобильных браузеров в ASP.NET] (http://stackoverflow.com/questions/2653765/detecting-requests-from-mobile-browsers-in-asp-net) – jfar

+0

@jfar, Для этого MVC имеет особые требования. См. Сообщение Гензельмана. AFAICS, ответ, на который вы ссылаетесь, не распространяется. –

+0

Вы можете увидеть некоторые решения здесь: http://stackoverflow.com/questions/6844020/way-to-do-content-adaptation-to-mobile – 2011-08-17 13:06:27

ответ

7

Пользовательский агент - это все, что у вас есть в запросе HTTP GET, но вы должны позволить кому-то еще сохранить список. Мы используем Microsoft Mobile Device Browser File с пользовательским механизмом просмотра примерно так же, как this Scott Hanselman post.

+0

Спасибо, это то, что я как-то думал, думаю, я неправильно понял причину, по которой я был сказал не делать этого. Я полностью согласен с тем, что сохранение списка совместимости - это PITA! – Nate

1

Самый простой подход - это использовать отдельный домен «m.yourdomain.com» или «yourdomain.mobi» (Source) таким образом, чтобы вы могли предположить, что пользователь находится на мобильном устройстве.

+0

В этом случае я бы использовал агент браузера и cookie для переадресации один раз, и если они вернутся, предположим, что я неправильно маркировал их пользовательский агент и позволил им продолжить работу на полном сайте? – Nate

+0

Этот подход может быть болезненным. Вы должны предположить, что любой, кто отправляется на m.website.com, хочет мобильный сайт, но всегда дает им ссылку на полный сайт в нижнем колонтитуле. –

+0

@ Ниссан - это хорошая идея, хотя чем больше я думаю об этом, тем больше убеждаюсь, что мой ответ не всегда является хорошей идеей. – ChrisF

0

Хотя я считаю, что он нахмурился, чтобы понюхать браузер, чтобы определить возможности, и вы должны использовать возможности нюхания, такие как JQuery.support. Когда дело доходит до фактического представления значительно разных макетов, я думаю, вам нужно понюхать идентификатор браузера и действовать соответственно.

+0

Это работает * после загрузки страницы. * Однако, когда вы отвечаете на запрос 'GET' на сервере, это невозможно. –

+0

@Craig - Конечно, я думал о своей стороне с клиентской стороны, но проблема заключается в обработке с серверной стороны, где у вас, очевидно, есть только идентификатор браузера во время GET. – Lazarus

Смежные вопросы