Как да открия мобилен браузър и да насоча подходящо съдържание към него?

Прочетох, че е лошо (не се препоръчва) да се използва Sniffing на потребителски агент за изпращане на правилното съдържание за мобилен браузър, така че се чудя кой Е най-добрият начин да направите това?

Използвам ASP.NET MVC и създадох своя сайт и той работи добре на настолни браузъри, така че гледам да започна да изграждам мобилна версия. Когато мобилен браузър влезе в сайта ми, бих искал да използвам различен набор от изгледи, който в идеалния случай притежава следните атрибути:

  1. Връзка към предварително мащабирани изображения
  2. Използвайте минимален javascript
  3. Премахнете цялото съдържание освен основното

Първата ми мисъл беше да надуша потребителския агент и след това да изпратя различен .CSS файл, но както беше посочено по-горе, прочетох, че това е лош начин за това, така че ви моля за вашите мисли.


person Nate    schedule 16.08.2010    source източник
comment
възможен дубликат на Откриване на заявки от мобилни браузъри в ASP.NET   -  person John Farrell    schedule 17.08.2010
comment
@jfar, MVC има специфични изисквания за това. Вижте публикацията на Hanselman. AFAICS, отговорът, който свързвате, не покрива това.   -  person Craig Stuntz    schedule 18.08.2010
comment
Можете да видите някои решения тук: stackoverflow.com/questions/6844020/   -  person    schedule 17.08.2011


Отговори (4)


Потребителският агент всъщност е всичко, което имате в HTTP GET заявка, но трябва да оставите някой друг да поддържа списъка. Ние използваме файла на браузъра на мобилно устройство на Microsoft с персонализирана машина за преглед по начин, приблизително подобен на тази публикация на Скот Хензелман.

person Craig Stuntz    schedule 16.08.2010
comment
Благодаря, това донякъде си помислих, предполагам, че не съм разбрал погрешно причината, поради която ми казаха да не го правя. Напълно съм съгласен, че поддържането на списък за съвместимост е PITA! - person Nate; 17.08.2010

Най-добрият начин да откриете мобилен браузър е да използвате този прекрасен кодов проект:

http://mdbf.codeplex.com/

За информация как можете да създавате целеви изгледи прочетете тук:

http://www.hanselman.com/blog/MixMobileWebSitesWithASPNETMVCAndTheMobileBrowserDefinitionFile.aspx

person Keith Adler    schedule 16.08.2010

Най-простият подход може да бъде използването на отделен домейн „m.yourdomain.com“ или „yourdomain.mobi“ (Source), по този начин можете да приемете, че потребителят е на мобилно устройство.

person ChrisF    schedule 16.08.2010
comment
В този случай бих ли използвал агент на браузър и бисквитка, за да пренасоча веднъж и ако се върнат, да приемем, че съм маркирал неправилно техния потребителски агент и да ги оставя да продължат на целия сайт? - person Nate; 17.08.2010
comment
Този подход може да бъде болезнен. Трябва да приемете, че всеки, който посещава m.website.com, иска мобилния сайт, но винаги му давайте връзка към пълния сайт в долния колонтитул. - person Keith Adler; 17.08.2010
comment
@Nissan - това е добра идея, макар че колкото повече мисля за това, толкова повече се убеждавам, че отговорът ми не е непременно добра идея. - person ChrisF; 17.08.2010
comment
@Nate - можете да направите или просто да имате връзка към мобилния сайт на основния сайт, въпреки че вече не съм убеден от отговора си ;) - person ChrisF; 17.08.2010
comment
Имах предвид пренасочването да е на моя www. домейн, пренасочете веднъж към m. домейн. Съгласен съм, наличието на отделни домейни е доста безопасен вариант. Мисля, че ще използвам файла на мобилния браузър, тъй като изглежда доста полезен. - person Nate; 17.08.2010
comment
Никога обаче не пренасочвайте дълбока връзка към мобилна начална страница. Това нарушава външните връзки и дразни мобилните потребители. - person Craig Stuntz; 17.08.2010

Въпреки че смятам, че не се гледа с недоволство да се надушва за браузър, за да се определи възможностите, и трябва да използвате надушване на възможности, като например JQuery .поддръжка. Когато става въпрос за действително представяне на значително различни оформления, тогава мисля, че трябва да подушите ID на браузъра и да действате съответно.

person Lazarus    schedule 16.08.2010
comment
Това работи след като страницата се зареди. Когато отговаряте на GET заявка на сървъра обаче, няма начин да направите това. - person Craig Stuntz; 17.08.2010
comment
@Craig - Разбира се, мислех от страна на клиента, но проблемът е обработката от страна на сървъра, където очевидно имате само ID на браузъра, предоставен по време на GET. - person Lazarus; 17.08.2010