Tôi biết đây là một câu hỏi khá ngày, nhưng tôi đã đưa ra một giải pháp cho các vấn đề với sự trở lại/nút về phía trước khi chuyển đổi giữa một trang tiêu chuẩn và một trang Lịch sử-state.
Kịch bản: Sử dụng Lịch sử HTML5 (hoặc plugin history.js) trên một tập hợp các trang Sau đó, các trang khác chúng tôi cần tải thực, còn gọi là trang chuẩn (không hỏi tại sao, nhưng có một số trường hợp sử dụng nhất định có thể cần thiết)
Khi bạn đi từ trang trạng thái Lịch sử và thực hiện tải thực lên trang chuẩn. Bạn không thể quay trở lại: nó thay đổi url, nhưng không tải trang - nó chỉ kích hoạt một statechange; mà tôi giả định là vấn đề của bài đăng gốc. Ý kiến cá nhân của tôi là đây là lỗi trình duyệt (tất cả các trình duyệt đều có vấn đề), bởi vì trình duyệt nên biết trang bạn đang truy cập đã được tải lại bên ngoài trang Tiểu sử Lịch sử.
Tôi đã sửa lỗi này bằng một cái gì đó thực sự đơn giản: Lắng nghe sự kiện statechange và yêu cầu trình duyệt làm mới khi nó kích hoạt. Bằng cách này tôi không quan tâm nếu họ quay trở lại hoặc chuyển tiếp ra khỏi trang này. Nếu trình duyệt cho rằng trạng thái đang thay đổi (các liên kết không kích hoạt sự kiện statechange), chỉ quay lại/chuyển tiếp INTO trang trạng thái Lịch sử mới kích hoạt sự kiện này, vì vậy nó giải quyết được vấn đề.
Mã, sử dụng jQuery + History.js plugin:
$(window).on('statechange', function() {
window.location.reload();
});
Nếu điều này không có ý nghĩa, có lẽ bạn đang không có vấn đề này. Tuy nhiên, tôi đã nhận thấy điều này trên nhiều trang web mà làm sử dụng Lịch sử HTML 5 (thậm chí pinterest.com có vấn đề này nếu bạn tải lại khi trên một phương thức hình ảnh và sau đó cố gắng quay lại).
Hy vọng rằng, nếu bạn có vấn đề này, bạn sẽ tìm thấy câu trả lời này và có một phào nhẹ nhõm :)
Nguồn
2013-02-01 08:57:37
Tôi đã nghĩ về logic tương tự, tuy nhiên, statechange được kích hoạt khi vấn đề pushState và khi quay lại/chuyển tiếp được nhấn, tạo vòng lặp tải lại vô hạn. – Dean
Thật vậy, một cứu trợ rất lớn. Tôi sắp bỏ cuộc. –