2010-11-15 40 views
5

Tengo un script que detecta si eres un usuario de iPhone o no y redirige a una página más amigable para iPhone.Ver sitio web completo, no versión móvil en iPhone

<script type="text/javascript"> 
    if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) 
    { 
     location.replace("http://domain.com/iphone/"); 
    } 
</script> 

Esto funciona bien pero tiene un problema. Es una convención ofrecer al usuario la posibilidad de ver la página web completa . Sin embargo, si hago un enlace a la raíz, obviamente la redirección los enviará a la versión móvil.

Cualquier idea sobre cómo incluirla si hace clic en el enlace de /iphone/, pueden ir al / y quedarse allí.

Respuesta

0

The Query String es el camino a seguir (como los otros han dicho anteriormente). Al mirar a Facebook, si hace clic en el enlace "sitio completo" en el sitio móvil, se redirige a www.facebook.com/login.php?m2w - el m2w probablemente sea MobileToWeb y esto evitará que el sitio redirija al usuario al sitio Sitio movil.

+0

Sí, notado. Sin embargo, el problema es que todos los demás anclajes estarán vinculados a href = "/". Por lo tanto, una cadena de consulta para mantener el estado no funcionará a menos que se use una cookie. Puede funcionar en la primera solicitud, pero no cuando un usuario navega a otra página, luego hace clic en Inicio. Se les pedirá que cambien al sitio móvil nuevamente. – Rya

8

Cuando llegue el usuario, determine su tipo de navegador, ya sea móvil o completo, y configure una cookie con este valor. Use este valor de cookie para decidir qué versión del sitio mostrar. Como mencionas, ofrece un enlace al sitio "completo" para los usuarios de dispositivos móviles, pero si lo hacen, ejecuta un script rápido para actualizar la cookie al valor "completo" y luego redirigirlos al sitio completo. Su cookie ahora está configurada para el sitio completo, por lo que no se devolverán al sitio móvil.

Ahora, si las cookies son un problema, podría usar algo como PHP para establecer los valores de una sesión para mantener el estado completo/móvil de la sesión, pero eso probablemente vaya más allá del alcance de la pregunta original.

+0

Puede hacer esto sin la secuencia de comandos intermedia, al tener una cadena de consulta como "? I-quiero-usar-el-sitio-principal = 1" (obviamente menos compleja que la XD), estableciendo una cookie si eso la cadena de consulta está allí, y la redirección si ni la cookie ni la cadena de consulta están presentes. –

+0

y si tienen cookies desactivadas, puede simplemente configurarlo en la cadena de consulta: '? PreventionMobileRedirect = true' o algo – Joel

+0

@Kolink: Esto es cierto. Estaba pensando en PHP, no en JavaScript, pero funciona de cualquier manera. Voy a enmendar la respuesta, eso está más en el espíritu de la pregunta original. –

Cuestiones relacionadas