Przekierowanie urządzeń mobilnych do alternatywnej wersji mojej strony

Mamy alternatywną wersję strony internetowej gotową na urządzenia mobilne. Treść, którą serwujemy, jest inna i działa dobrze.

Jaki jest najlepszy sposób na wykrycie, która wersja ma służyć. Nie mamy listy wszystkich urządzeń mobilnych, więc korzystanie z nagłówka user-agent jest trudne, ponieważ możemy coś przegapić.

Myśleliśmy o użyciu szerokości ekranu urządzenia-ale co się stanie, jeśli urządzenie mobilne nie obsługuje javascript. Jak to powąchać ?

Author: Vadim Kotov, 2009-07-13

9 answers

Możesz użyć bazy danych opisów urządzeń (takiej jak wurfl ), która rozpozna urządzenie klienckie z nagłówków żądań. Następnie możesz zapytać tę bazę danych, aby zdecydować, czy urządzenie może obsługiwać Twoją witrynę (np. obsługa javascript, czy ekran jest wystarczająco duży), zanim zdecydujesz, czy przekierować je do innej witryny.

Nie wspominasz o swoim środowisku, ale wurfl dostarcza API dla Java i PHP, a może i innych. Jeśli nie ma dostarczonego API, możesz nadal używać WURFL, ale będziesz musiał parsować i przetwarzać dane XML samodzielnie.

 24
Author: skaffman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-13 10:18:27

Media = "handheld" nie działa z nowoczesnymi smartfonami, takimi jak iphone, które udają przeglądarkę desktopową (używa typu media screen).

Http://detectmobilebrowser.com / Free & open source, posiada kompleksowy program do sprawdzania użytkowników mobilnych dostępny w wielu językach-javascript, php, asp.net, ruby itp.

 8
Author: JohnB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-28 16:24:59

Jeśli szukasz przekierowania na stronę mobilną za pomocą JavaScript, zauważyłem, że wurfl ma również rozwiązanie, które pozwoli Ci zrobić wykrywanie po stronie serwera za pomocą JavaScript.

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

Zostanie Ci obiekt JSON, który wygląda następująco:

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

Możesz użyć tego:

if (WURFL.is_mobile === true) {
    window.location.replace("http://stackoverflow.com");
}
 5
Author: Elliot Fehr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-20 17:03:38

Myślę, że nie ma dobrego / eleganckiego sposobu, aby wykryć, czy użytkownik ma włączony javascript.

IMO, najlepiej jest wymienić user agent: TUTAJ {[4] } jest lista User-Agent, która wydaje się dość kompletna (w języku francuskim, niestety).

 2
Author: Clement Herreman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-13 10:02:58

Po prostu umieść to w nagłówku:

<script type="text/javascript">
 <!--
  if (screen.width <= 700) {
  window.location = "http://www.mobile-site.com";
  }
 //-->
</script>
[1]}prawie każdy ekran komputera jest powyżej threshhold 700px, ale to vaule można zmienić. Nie ma tam telefonu ani tabletu, który jest powyżej 700px (przynajmniej Nie wiem o żadnym), więc wszystkie dzielniki mobilne przekierują na Twoją stronę mobilną.
 2
Author: Walker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-16 16:52:03

Alternatywą dla WURFL jest Mobile Detect , klasa PHP do wykrywania:

  • tabletka
  • Mobile
  • iOs
  • Android
  • przeglądarki
  • i wiele więcej

Więc jeśli WURFL nie zrobi tego, czego potrzebujesz, zawsze możesz to sprawdzić.

 2
Author: Sander Koedood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-15 09:08:49

Zgadzając się ze Skaffmanem, inną bazą danych urządzenia jest DeviceAtlas . Musisz za to zapłacić.

 0
Author: darasd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-13 10:17:33

Jeśli urządzenie nie obsługuje JS, lepiej rozważyć rozwiązanie po stronie serwera, a WURFL API może pomóc w tym kierunku.

Czasami chcemy uniknąć problemów z tego typu podejściem (np. odwrotne proxy buforuje strony i nie pozwala przekierowywać do wersji mobilnej) lub potrzebujemy szybkiego rozwiązania, wiedząc, że obecnie prawie wszystkie najnowsze urządzenia obsługują JS.

Z tego powodu napisałem skrypt JS o nazwie " redirection_mobile.js " wykrywający agenta użytkownika przeglądarce i przekierowuje do mobilnej wersji witryny, jeśli uzyskujesz do niej dostęp z urządzenia mobilnego.

W niektórych przypadkach chcesz przekierować z urządzenia mobilnego do wersji desktopowej (np. z linkiem "przejdź do strony głównej"), skrypt poradzi sobie z tym i po zakończeniu sesji uzyskasz dostęp do wersji mobilnej ponownie.

Możesz znaleźć kod źródłowy na GitHubie tutaj http://github.com/sebarmeli/JS-Redirection-Mobile-Site i możesz przeczytać więcej szczegółów w jeden z moich artykułów tutaj:

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

 0
Author: sebarmeli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-21 10:20:20

Proste:

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

Włóż to do sekcji głowy.

 0
Author: yesminusno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-09 17:40:48