2009-07-13 18 views
19

Tenemos una versión alternativa de nuestro sitio web lista para dispositivos móviles. El contenido que servimos es diferente y funciona bien.Redirigir dispositivos móviles a una versión alternativa de mi sitio

Cuál es la mejor manera de detectar qué versión servir. No tenemos una lista de todos los dispositivos móviles, por lo que usar el encabezado user-agent es complicado ya que podemos perder algo.

Pensamos en utilizar el ancho de la pantalla del dispositivo, pero ¿qué sucede si el dispositivo móvil no admite javascript. ¿Cómo huele esto?

Respuesta

24

Puede usar una base de datos de descripción de dispositivo (como WURFL) que reconocerá el dispositivo cliente de los encabezados de solicitud. Luego puede consultar esa base de datos para decidir si el dispositivo puede manejar su sitio (por ejemplo, soporte de JavaScript o si la pantalla es lo suficientemente grande) antes de decidir si desea redirigirlos a un sitio diferente.

No menciona su entorno, pero WURFL proporciona API para Java y PHP, y tal vez otros también. Si no hay una API suministrada, puede seguir utilizando WURFL, pero tendrá que analizar y procesar los datos XML usted mismo.

+2

No sabía que una cosa existe. Mucho mejor que mi solución –

2

No creo que haya una forma buena/elegante de detectar si el usuario tiene activado su javascript.

IMO, lo mejor es listar el agente de usuario: here es una lista de User-Agent, que parece bastante completa (en francés, por desgracia).

+0

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

0

Al estar de acuerdo con Skaffman, otra base de datos de dispositivo es DeviceAtlas. Tienes que pagar por esto.

0

simple:

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

puesto que, en la sección de cabecera.

+0

-1 iPhone/iPod Touch, y otros teléfonos inteligentes, no respetan el tipo de medio "portátil". Quieren mostrar la versión normal del sitio, lo que significa que necesita algún * otro * mecanismo para detectar un navegador móvil. –

+1

Este no es un método de detección, es una forma de decirle semánticamente al navegador dónde encontrar el sitio móvil. – JKirchartz

+1

Pero seguro que sería bueno, IMO, si los navegadores móviles se estandarizaran para honrar el marcado de esta manera, por ejemplo, mostrando un cuadro de diálogo preguntando si el usuario quiere la versión móvil del sitio y ofreciendo recordar esa opción. – dbreaux

8

media = "handheld" no funciona con los teléfonos inteligentes modernos como el iphone que pretende ser un navegador de escritorio (utiliza el tipo de medio de pantalla).

http://detectmobilebrowser.com/ gratuito & de código abierto, tiene un corrector integral móvil de agente de usuario disponible en muchos idiomas - Javascript, PHP, asp.net, Ruby, etc.

+0

¿No es malo para SEO, ya que redirige a detectarmobilebrowser.com primero? –

+2

En realidad se supone que debes cambiar esa parte del código para que se lea * firecoding.com * en su lugar ;-) – JoshuaDavid

+0

@FireCoding que es el comentario más furtivo que haya visto :) –

0

Si el dispositivo no es compatible con JS, es es mejor considerar una solución del lado del servidor, y WURFL API puede ayudar en esa dirección.

A veces queremos evitar el problema con este tipo de enfoque (como un proxy inverso almacena en caché las páginas y no dejamos redirigir a la versión móvil) o necesitamos una solución rápida sabiendo que en la actualidad casi todos los dispositivos recientes son compatibles con JS.

Por este motivo, escribí un script JS llamado "redirection_mobile.js" que detecta el agente de usuario del navegador y lo redirige a la versión móvil de su sitio si está accediendo desde un dispositivo móvil.

En algún caso, usted desea redirigir desde un dispositivo móvil a una versión de escritorio (como con un enlace "Ir al sitio principal"), el script lo manejará y una vez que termine su sesión, tendrá acceso a la versión móvil otra vez.

Puede encontrar el código fuente en GitHub aquí http://github.com/sebarmeli/JS-Redirection-Mobile-Site y se puede leer más detalles en una de mi artículo aquí:

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

3

Sólo hay que poner esto en su cabecera:

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

Casi todas las pantallas de las computadoras están por encima del umbral de 700px, pero este vaule puede cambiarse. No hay un teléfono o tableta por encima de 700px (al menos no conozco ninguno) por lo que todos los dispositivos móviles se redireccionarán a su sitio móvil.

+1

El ipad regular tiene una resolución de 1024x768, la retina del iPad es dos veces eso. Así que sería cauteloso de confiar en esto. – anyeone

+0

Y a partir de 2015, esta respuesta es obsoleta. – Martijn

2

Una alternativa a WURFL es Mobile Detect, una clase PHP para detectar: ​​

  • tableta
  • móvil
  • iOs
  • Android
  • Navegadores
  • Y mucho más

Por lo tanto, en el caso de que WURFL no haga lo que necesita, siempre puede verificarlo.

5

Si está buscando redireccionar a un sitio móvil usando JavaScript, noté que WURFL también tiene una solución que le permitirá hacer la detección del lado del servidor con JavaScript.

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

se le dejó con un objeto JSON que se parece a:

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

A continuación, puede utilizar este:

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