Determinar usuario agente de zona horaria compensado sin necesidad de utilizar JavaScript?

StackOverflow https://stackoverflow.com/questions/880719

Pregunta

¿Hay una manera de determinar la zona horaria para un agente de usuario sin javasript?

Normalmente, se ejecutaría este fragmento de javascript:

<script type="text/javascript" language="JavaScript">
 var offset = new Date();
 document.write('<input type="hidden" id="clientTzOffset" 
 name="clientTzOffset" value="' + offset.getTimezoneOffset() + '"/>');
</script>

Sin embargo, para muchos de los móviles y clientes, JS o bien no es muy deficiente o apagado. ¿Hay algo inteligente que puedo hacer o estoy reducido a "Me dónde se encuentra y lo que está en timzeone decir?"

¿Fue útil?

Solución

Tal vez con un lenguaje del lado del servidor que podría hacer una búsqueda de IP, y luego determinar a partir de su país lo que la zona horaria que podrían estar en.

Me imagino que esto podría ser problemático, sin embargo.

Si va por este camino, esta pregunta (y respuestas) pueden ser de ayuda.

conseguir la ubicación de una dirección IP

Otros consejos

Utilice ambos. Han establecido Javascript el valor predeterminado de un campo de lista o texto. El porcentaje de personas sin javascript es tan pequeña la carga es pequeña.

Me iba a decir "utilizar la fecha de solicitud: cabecera", pero eso es sólo una cabecera de respuesta parece

.

pensé en otra solución, pero es un poco más compleja. Configurar solicitudes CABEZA falsos con un máximo de edad: 1 cabecera respuesta a coaccionar el navegador en volver a obtenerlos. A continuación, debe recibir una instrucción if-modified-since cabeza desde cualquier navegador moderno de esta manera:

If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

Sólo tenga cuidado de no enviar la cabecera Last-Modified con la primera respuesta, porque

  

Para obtener los mejores resultados cuando se envía un If-         Modified-Since campo de cabecera para la validación de la memoria caché, los clientes         aconseja el uso de la cadena de fecha exacta recibida en un última- anterior         campo de cabecera de modificación siempre que sea posible.

Tenga en cuenta el descargo de responsabilidad "cuando sea posible". Esta y otras partes de la descripción de cabecera implican que el cliente utilizará su propio reloj cuando no sabe nada de los servidores.

Con la combinación correcta de los encabezados de esta realidad podría funcionar muy bien.

EDIT: Probado algunas pruebas con FF pero no pudo encontrar una combinación válida de cabeceras para desencadenar un If-Modified-ya que en el tiempo del cliente. FF sólo envía la cabecera si tiene un encabezado de la última modificación con anterioridad y entonces, sólo se refleja el valor de nuevo (aunque no es una fecha válida).

He visto un sitio web donde en lugar de preguntar qué zona horaria que el usuario estaba en ella se limitó a preguntar "escoger el momento correcto" y se les mostró una lista de horas. Es una diferencia sutil entre "lo que la zona horaria se encuentra en" pero mucho más fácil de entender. Lamentablemente no puedo encontrar el sitio web más

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top