2011-12-08 8 views
6

Estoy buscando tenerlo para que cuando un usuario carga nuestra página compruebe si está en un dispositivo móvil y luego lo redirija a una versión móvil de nuestro sitio, pero conserve la etiqueta hash original del enlace que siguieron. Intenté configurar la nueva ubicación con la etiqueta hash en JavaScript y funciona en Chrome, pero no funciona en Safari. He leído que esto es algo que hace Safari. ¿Hay alguna solución a esto?¿Cómo puedo redireccionar a un sitio móvil pero mantener la etiqueta hash?

+0

nos muestras su código? – JamesHalsall

+0

Sí, solo estaba configurando Window.location en javascript. Resulta que Safari no es compatible con los redireccionamientos de etiquetas hash, lo cual es muy molesto teniendo en cuenta que los iPhones y iPads son todos Safari. Entonces, algunos js como este window.location = "http://www.example.com/#page2" lo llevarán al sitio, pero no saltará a la página 2 como dice la etiqueta hash. Safari quita la etiqueta hash al redireccionar. –

+0

¿Dónde leíste * esto es algo que Safari hace *? – alex

Respuesta

3

En realidad, recibimos un informe de error muy similar de nuestros clientes.

Para nosotros, el escenario implicaba un hashtag en forma de #quicklogin/abc123 y solo aparecía al ver el sitio en Safari. Esto era parte de la URL inicial que el cliente cargaría y los presentaría con una pantalla de inicio de sesión alternativa. Al ir directamente a la URL en Safari, el navegador eliminó toda la etiqueta y la ignoró.

Cuando cambiamos esto a algo así como #quicklogin/test (o cualquier otro hash que contenga solo caracteres alfabéticos) funcionó bien. También funcionó bien al cargar el sitio y luego aplicar manualmente la etiqueta hash en dos pasos separados.

Así que nuestra conclusión es que puede haber algún problema con los hashtags que contienen valores numéricos en Safari.

+3

Probamos esto un poco, y * solo * letras minúsculas funcionan ('a-z'). Al menos '=', '_' y' Z' dieron como resultado que Safari eliminara el fragmento completo. – Timmmm

3

Tienes que hacer esto redirigiendo con javascript (porque javascript puede leer el valor de hash) o devolviendo condicionalmente html diferente basado en el agente de usuario. Se supone que los navegadores conservan el fragmento hash a través de un 302, pero a menudo no (ver el error webkit de 3 años a continuación) y los fragmentos hash no se envían al servidor por lo que no se pueden tratar de forma manual.

https://bugs.webkit.org/show_bug.cgi?id=24175

4

Debe escapar símbolo '#' y todo estaría bien

+0

Esto no tiene más sentido que la otra copia que publicó en otra pregunta. –

+2

Esto realmente funciona ... ¡Sustituir el "#" con "% 23" funciona como un amuleto! ¡Gracias! – user1265146

Cuestiones relacionadas