2017-12-11 1 views
6

Ich habe ein Formular mit einem Datumseingabefeld. Wenn Sie die Seite laden, wird die Eingabe mit dem aktuellen Datum gefüllt. Aber wenn Chrome die zuletzt geöffneten Tabs von gestern startet und wiederherstellt, gibt es immer das Datum von gestern im Formular. Wenn ich die Seite neu lade, wird das korrekte Datum angezeigt. Aber ich möchte, dass Chrome das aktuelle Datum sofort anzeigt.Ermitteln, ob Chrome die Seite von gestern wiederherstellt

Eine clevere Idee, wie Sie das beheben können?

Aktualisierung: Seite ist auf cache-control:no-cache, private eingestellt.

+0

Vielleicht löst ein Zeitlimit zum Aktualisieren der Datumseingabe Ihr Problem. Ich bin mir nicht sicher, ob Chrome die Ereignis-Listener nach einer Seitenwiederherstellung am Leben erhält. –

+0

Wird onDomReady nicht ausgelöst? Vielleicht können Sie dies debuggen, indem Sie auch die Zeit anzeigen ... um nicht immer einen einzigen Tag warten zu müssen. – Alex

+0

Wird das Feld vom Server oder von Javascript ausgefüllt? – Alex

Antwort

2

Ich legte ein Datumsfeld und ein JavaScript auf der Seite. Stellt sich heraus, dass die Seite aus dem Cache geladen wird. Es gibt immer noch das Datum von gestern im Formular und das JavaScript wird genauso ausgeführt wie beim Laden der Seite. Wenn ich das Datum vergleichen kann ich die alte Seite erkennen:

<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> 

Von hier aus können Sie die Seite neu zu laden oder den Benutzer fragen, was zu tun ist.

-2

Sie können entweder AJAX verwenden oder das Serverdatum abrufen.

+0

Dies ist nicht wirklich eine Antwort, kommentieren Sie nicht im Antwortbereich – Tomm

Verwandte Themen