2010-07-14 35 views
13

Tôi tò mò nếu có một cách để phát hiện sự kiện làm mới trình duyệt trong javascript cụ thể. Chúng tôi đang sử dụng plugin jQuery.address để cung cấp chức năng nút chuyển tiếp và nút quay lại cho các chức năng AJAX. Vấn đề tôi đang phải đối mặt là plugin này dường như không phát hiện được nếu người dùng đã làm mới trang.Phát hiện làm mới trình duyệt trong Javascript

Mã này được thực hiện mỗi khi người dùng di chuyển về phía trước hoặc quay lại lịch sử trình duyệt. Tôi cũng muốn nó exexute khi người dùng làm mới.

$.address.init(function(event) { 
}).change(function(event) { 

     SummaryDiv.SwapPanels(newPanelID); 
    } 

Bất kỳ ý tưởng nào?

Trả lời

5

Một nỗ lực ngây thơ của tôi sẽ chỉ đơn giản là lưu trữ trạng thái hiện tại vào một số cookie sau mỗi thay đổi và chỉ cần tải lại chúng trên mỗi lần tải trang.

+0

Đây là cách tôi sẽ thực hiện, mà không tra cứu các phương pháp khác. Nhưng biết rằng phương pháp này có thể dễ dàng tránh được/chỉnh sửa bởi người dùng. –

+5

Như toàn bộ trang web của Javascript bị vô hiệu hóa :) – LukeN

+0

Im đang cố gắng này. Điều này có vẻ là một giải pháp phổ biến. – Nick

1

Khi làm mới trang, javascript cũng được tải lại. Vì vậy, bạn không thể chỉ định những gì bạn muốn xảy ra trực tiếp trong phương pháp sẵn sàng của jQuery?

1

tôi đã có thể để buộc các mã sự kiện thay đổi để chạy trên refresh bởi

window.onload = $.address.update(function(){  
... 
}) 
5

Cùng những dòng này, tôi đã có một trang mà hành vi của tôi không muốn lặp lại nếu làm mới, vì vậy tôi đã thay đổi mã băm theo chương trình như được mô tả trong this answer.

checkRefresh: function() { 
    if (document.location.hash === '#visited') { 
     console.log('Refreshed'); 
     return true; 
    } else { 
     document.location.hash = 'visited'; 
     return false; 
    } 
} 

CẬP NHẬT

tôi thấy rằng ít nhất Mobile Safari sẽ bỏ qua băm nếu làm mới xảy ra tự động (ví dụ dữ liệu trang đã bị xóa hẳn từ bộ nhớ cache trước khi được xem một lần nữa). Tôi đã sử dụng một giải pháp phức tạp hơn described here.

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