Đây là một ví dụ đơn giản. Bất kể bạn return
từ cuộc gọi lại unload
sẽ được hiển thị trong xác nhận bật lên của trình duyệt.
dụ làm việc gửi yêu cầu Ajax trước khi dỡ bỏ http://jsfiddle.net/alexflav23/hujQs/7/
Cách dễ nhất để làm điều này:
window.onbeforeunload = function(event) {
// do stuff here
return "you have unsaved changes. Are you sure you want to navigate away?";
};
trong jQuery:
$(window).on("beforeunload", function() {
$.ajax("someURL", {
async: false,
data: "test",
success: function(event) {
console.log("Ajax request executed");
}
});
return "This is a jQuery version";
});
Nhìn vào tab Mạng của trình duyệt. Bạn sẽ thấy cách yêu cầu được gửi như bạn muốn làm. Chỉ cần gửi dữ liệu thích hợp.
Ghi nhớ tất cả các thao tác được kích hoạt phải đồng bộ, vì vậy bạn chỉ có thể thực hiện các yêu cầu ajax đồng bộ chẳng hạn. Tuy nhiên, điều trên không hoàn toàn đáng tin cậy cho bất kỳ mục đích nào.
Chọn sao lưu định kỳ dữ liệu người dùng thành localStorage
và đồng bộ hóa với máy chủ tự động. Giữ window.onbeforeunload
chỉ là một biện pháp phòng ngừa bổ sung, nhưng không phải là một cơ chế chính. Nó cũng được biết là gây ra vấn đề.
Bạn muốn làm gì khi tải xuống? – writeToBhuwan
Tôi cần thực hiện cuộc gọi Ajax tới PHP để hủy đặt biến phiên. –
'điều hướng đi bằng cách nhấp vào liên kết' điều này cho thấy bạn phải liên kết bỏ trên tài liệu của bạn – muneebShabbir