4

有没有办法确定没有 javasript 的用户代理的时区?

通常,我会执行这段 javascript:

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

然而,对于很多手机和客户端来说,JS 要么不存在,要么被关闭。有什么聪明的事情我可以做,还是我被简化为“告诉我你在哪里,你在哪个 timzeone?”

4

4 回答 4

5

两者都用。让 javascript 设置列表或文本字段的默认值。没有 javascript 的人的比例太小了,负担也很小。

我本来想说“使用请求日期:标头”,但这似乎只是一个响应标头。

于 2009-05-19T02:35:32.380 回答
3

我想到了另一种解决方案,但它有点复杂。设置一些带有 max-age: 1 响应标头的虚假 HEAD 请求,以强制浏览器重新获取它们。然后,您应该从任何现代浏览器收到一个 if-modified-since 标头,如下所示:

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

请注意不要在第一个响应中发送任何 Last-Modified 标头,因为

为了在发送 If-Modified-Since 标头字段以进行缓存验证时获得最佳结果,建议客户端尽可能使用在先前的 Last-Modified 标头字段中收到的确切日期字符串。

请注意“尽可能”的免责声明。这一点,以及头部描述的其他部分暗示客户端将在它不知道服务器的任何内容时使用它自己的时钟。

使用正确的标题组合,这实际上可以很好地工作。

编辑:尝试使用 FF 进行一些测试,但找不到有效的标头组合以在客户端时间触发 if-modified-since。FF 仅在之前获得最后修改的标头时才发送标头,然后仅将值反映回来(即使它不是有效日期)。

于 2009-05-21T05:47:22.050 回答
2

也许使用服务器端语言,您可以进行 IP 查找,然后从他们的国家/地区确定他们可能在哪个时区。

不过,我想这可能会有问题。

如果沿着这条路走下去,这个问题(和答案)可能会有所帮助。

从 IP 地址获取位置

于 2009-05-19T02:22:46.900 回答
1

我见过一个网站,它没有询问用户所在的时区,而是简单地询问“选择正确的时间”,并向他们展示了一个时间列表。这与“您在哪个时区”略有不同,但更容易理解。不幸的是,我再也找不到该网站了

于 2009-05-19T02:46:12.733 回答