2013-11-04 28 views
1

我有事件頁面顯示日期和時間。對於登錄成員,我可以抓住他們的首選時區。但對於那些未登錄的用戶,我想先檢測他們的筆記本電腦時區,並在當地時區顯示該頁面。
我使用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調用之後。重新加載發生在第一次請求完成之後。有沒有辦法在第一個請求被加載之前立即重新加載頁面?否則,頁面加載兩次會很奇怪。

+0

查看JavaScript函數getTimezoneOffset:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/使用getTimezoneOffset – Archer

回答

0

我會建議在客戶端 上設置一個帶有時區的cookie,然後重新加載頁面。這將使您的導軌應用程序變得簡單。

(PS HTTP請求可能包含一個「日期」標題給客戶的日期+時間。生產的rubyonrails輸出,無需阿賈克斯所有時,您可以使用。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.18 但更常見的情況是客戶端不會發送日期標題。)

相關問題