Trong trường hợp của tôi, tôi đang sử dụng jQuery .load()
để cập nhật DIV trong một SPA (đơn trang [web] ứng dụng).
Làm quen với $(window).on('hashchange', ..)
trình xử lý sự kiện, điều này tỏ ra khó khăn và mất một chút để hack. Nhờ đọc rất nhiều câu trả lời và thử các biến thể khác nhau, cuối cùng đã tìm ra cách làm cho nó hoạt động theo cách sau. Xa như tôi có thể nói, nó đang tìm kiếm ổn định cho đến nay.
Tóm lại - có biến số globalCurrentHash
cần được đặt mỗi khi bạn tải chế độ xem.
Sau đó, khi $(window).on('hashchange', ..)
nghe sự kiện chạy, nó sẽ kiểm tra như sau:
- Nếu
location.hash
có cùng giá trị, nó có nghĩa là Đi Forward
- Nếu
location.hash
có giá trị khác nhau, nó có nghĩa Going Back
Tôi nhận thấy bằng cách sử dụng var toàn cục s không phải là giải pháp thanh lịch nhất, nhưng làm mọi thứ OO trong JS có vẻ khó khăn với tôi cho đến nay. Gợi ý để cải thiện/tinh tế chắc chắn đánh giá cao
Thiết lập:
- Xác định một var toàn cầu:
var globalCurrentHash = null;
Khi gọi .load()
tới cập nhật DIV, cập nhật var toàn cầu cũng như:
function loadMenuSelection(hrefVal) {
$('#layout_main').load(nextView);
globalCurrentHash = hrefVal;
}
Trên trang sẵn sàng, thiết lập người nghe để kiểm tra var toàn cầu để xem nếu Nút Quay lại đang được ép:
$(document).ready(function(){
$(window).on('hashchange', function(){
console.log('location.hash: ' + location.hash);
console.log('globalCurrentHash: ' + globalCurrentHash);
if (location.hash == globalCurrentHash) {
console.log('Going fwd');
}
else {
console.log('Going Back');
loadMenuSelection(location.hash);
}
});
});
Bạn đang tìm kiếm API lịch sử HTML5. – SLaks
có thể trùng lặp của [phát hiện nút quay lại trong trình duyệt] (http://stackoverflow.com/questions/6359327/detect-back-button-click-in-browser) –