我有事件頁面顯示日期和時間。對於登錄成員,我可以抓住他們的首選時區。但對於那些未登錄的用戶,我想先檢測他們的筆記本電腦時區,並在當地時區顯示該頁面。
我使用jQuery的application.html.erb:
在全部數據加載之前檢測時區
<% 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調用之後。重新加載發生在第一次請求完成之後。有沒有辦法在第一個請求被加載之前立即重新加載頁面?否則,頁面加載兩次會很奇怪。
查看JavaScript函數getTimezoneOffset:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/使用getTimezoneOffset – Archer