2017-12-11 25 views
6

Tôi có biểu mẫu có trường nhập ngày. Nếu bạn tải trang, đầu vào sẽ được lấp đầy với ngày hiện tại. Nhưng nếu Chrome bắt đầu và khôi phục các tab đã mở cuối cùng từ hôm qua, thì luôn có ngày từ ngày hôm qua trong biểu mẫu. Nếu tôi tải lại trang, trang đó sẽ hiển thị ngày chính xác. Nhưng tôi muốn Chrome hiển thị ngày hiện tại ngay lập tức.Phát hiện nếu Chrome khôi phục trang từ hôm qua

Bất kỳ ý tưởng thông minh nào về cách sửa lỗi này?

Cập nhật: Trang được đặt thành cache-control:no-cache, private.

+0

Có thể thiết lập một thời gian chờ để làm mới đầu vào ngày giải quyết vấn đề của bạn. Tôi không chắc liệu Chrome có giữ người nghe sự kiện còn sống sau khi khôi phục trang hay không. –

+0

Không bật kích hoạtDomReady? Có lẽ bạn có thể gỡ lỗi này bằng cách hiển thị thời gian ... để không phải luôn luôn chờ đợi một ngày. – Alex

+0

Trường có được máy chủ điền hoặc bằng javascript không? – Alex

Trả lời

2

Tôi đã đặt trường ngày và JavaScript trên trang. Hóa ra trang được tải từ bộ nhớ cache. Vẫn còn ngày từ ngày hôm qua trong biểu mẫu và JavaScript được thực hiện giống như cách tải trang. Nếu tôi so sánh ngày tôi có thể phát hiện trang cũ:

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

Từ đây bạn có thể tải lại trang hoặc yêu cầu người dùng phải làm gì.

-2

Bạn có thể sử dụng ajax hoặc nhận ngày của máy chủ.

+0

Đây không thực sự là câu trả lời, Không bình luận trong phần trả lời – Tomm

Các vấn đề liên quan