Tôi đã có một trò chơi mà chạy trong trình duyệt web (như là một plugin) và những gì tôi đang cố gắng làm là:Ngăn chặn trình duyệt web từ đóng cửa cho đến khi phản ứng AJAX được trả về
Detect nếu người dùng đã quyết định đóng trình duyệt (Alt + F4, nhấn nút 'X', v.v.)
Ngăn trình duyệt kết thúc khi chúng tôi gọi điện đến các dịch vụ web của chúng tôi để ghi lại rằng người dùng đã đóng trình duyệt
Khi chúng tôi nhận được phản hồi từ các dịch vụ web, thả khóa và cho phép trình duyệt đóng lại theo yêu cầu.
Lý do chính chúng tôi muốn làm điều này là chúng tôi đang gặp phải một số vấn đề đồng thời và duyệt qua nhật ký của mình, chúng tôi muốn cách ly mọi người đăng xuất/đóng trình duyệt khỏi các phiên bản chính hãng.
Tôi nhìn vào thực hiện điều này với JQuery (đối với X-Browser tương thích - Opera sẽ không làm việc nhưng chúng tôi không có bất kỳ người dùng trên Opera nào may mắn):
$(window).bind('beforeunload', function(e) {
e.preventDefault();
// make AJAX call
});
Vấn đề là màn hình này hộp thoại xác nhận cho người dùng ('Bạn có chắc chắn muốn thoát khỏi trang này') mà người dùng có thể xác nhận trước khi cuộc gọi AJAX được gửi hay không.
Vì vậy, câu hỏi đặt ra là có cách ngăn trình duyệt đóng lại cho đến khi nhận được phản hồi không? Ngoài ra 'beforeunload' cũng kích hoạt khi trang được thay đổi - có cách nào để phân biệt nhấp vào một liên kết từ thực sự nhấp vào đóng không?
Biết ơn vì bất kỳ trợ giúp nào về điều này!
Chỉ cần ra khỏi tò mò ... là có bất kỳ sự khác biệt nếu bạn trao đổi "preventDefault" và "thực hiện cuộc gọi ajax" phần? – hugomg