2017-12-11 10 views
6

日付入力フィールドを持つフォームがあります。ページをロードすると、入力は現在の日付で埋められます。しかし、Chromeが昨日から最後に開いたタブを開始して復元すると、昨日からの日付が常にフォームにあります。 ページをリロードすると、正しい日付が表示されます。でも、Chromeに現在の日付をすぐに表示したいと思います。Chromeが昨日からページを復元するかどうかを検出する

どのようにこれを修正するための巧妙なアイデアですか?

更新:ページがcache-control:no-cache, privateに設定されています。

+0

おそらく日付入力を更新するタイムアウトを設定すると、問題が解決します。 Chromeがページの復元後にイベントリスナーを有効にしているかどうかはわかりません。 –

+0

onDomReadyがトリガーされていませんか?たぶんあなたは時間を表示することによってこれをデバッグすることができます。常に1日待つ必要はありません。 – Alex

+0

フィールドにはサーバーまたはJavaScriptが入力されていますか? – Alex

答えて

2

私はページに日付フィールドとJavaScriptを配置しました。ページがキャッシュからロードされます。昨日からの日付はまだフォームにあり、JavaScriptはページ読み込みと同じように実行されます。日付を比較すると、古いページを検出できます。

<input id="form_date" name="form_date" type="hidden" value="2017-12-19 17:52:08"> 
<script> 
    // Day compare 
    Date.prototype.sameDay = function(d) { 
     return this.getFullYear() === d.getFullYear() 
      && this.getDate() === d.getDate() 
      && this.getMonth() === d.getMonth(); 
    }; 
    var x_today = new Date(); 
    var x_page_date = new Date($('#form_date').val()); 
    if (console && !x_today.sameDay(x_page_date)){ 
     console.log("Old page!"); 
     console.log('page date: ', x_page_date); 
     console.log('today: ', x_today); 
    } 
</script> 

ここからページをリロードしたり、ユーザーに何をすべきかを尋ねたりできます。

-2

ajaxを使用することも、サーバーの日付を取得することもできます。

+0

これは本当に答えではありません、答えのセクションにコメントしないでください – Tomm

関連する問題