javascript - 在所有数据加载之前检测时区

标签 javascript jquery html ruby-on-rails ajax

我的事件页面显示日期和时间。对于登录的成员(member),我可以获取他们的首选时区。但对于那些未登录的用户,我想首先检测他们的笔记本电脑时区,并以他们的本地时区显示页面。
我在application.html.erb中使用jquery:

<% if session[:time_zone].blank? %>
    <script type="text/javascript">
        jQuery.ajax({
            data: {user_time_zone: $().get_timezone()},
            type: 'post',
            url: "/set_time_zone_session"
        })
    </script>

问题:它最后运行 jQuery,因此第一次时,页面显示默认时区。刷新页面后,所有子序列请求时区都得到正确设置。 此外,在第一次使用 javascript 请求后重新加载页面,有更好的方法吗?

额外:如果我必须重新加载页面。我添加 location.reload(); jQuery 调用后。重新加载发生在第一个请求完成后。有没有办法在第一个请求加载之前立即重新加载页面?否则,页面加载两次就会很奇怪。

最佳答案

我建议在客户端设置带有时区的 cookie 然后只需重新加载页面即可。这将使您的 Rails 应用程序保持简单。

(p.s. HTTP 请求可能包含一个“Date” header ,为客户端提供日期+时间。您可以在生成 ruby​​onrails 输出时使用它,根本不需要 ajax。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.18 但更常见的情况是客户端不发送日期 header 。)

关于javascript - 在所有数据加载之前检测时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19778123/

相关文章:

javascript - 相位器抖动检测

javascript - HTML5 <canvas> 无抗锯齿

使用自定义属性的 css 样式使其更具可读性。是好是坏?

javascript - 将元素移入另一个(具有相同类的父元素)

javascript - 未捕获的类型错误 : Cannot read property 'add' of undefined

javascript - 检查 dom 对象大小调整的最高效方法

javascript - 如何使用 Onclick Jquery 事件为整个登录 session 设置 Cookie

javascript - Bootstrap 模式不会从包含 AJAX 调用创建的内容的模式中显示

jQuery 使用 ID 选择每行中的第三个、第四个和第五个 TD

html - *多个* 打印特定的 Div