tôi stumbled trên câu hỏi này trong khi tìm kiếm câu trả lời cho câu hỏi của riêng tôi mà là tương tự như trong tự nhiên. Vì vậy, tôi đã đưa ra một cách giải quyết ở đây. Tôi cần gọi "onbeforeunload" chỉ khi người dùng nhấp vào một nút cụ thể và không ai trong số những người khác. Hy vọng rằng điều này làm sáng tỏ một số câu hỏi của bạn.
Tôi đã làm việc này ở jsfiddle. Bạn có thể kiểm tra nó trong bản demo mà tôi đã thiết lập và có thể thấy rõ rằng nó chỉ hoạt động với một trong các nút. Tuy nhiên, có một báo trước, mà tôi đã không bận tâm để tìm một sửa chữa. Nếu bạn bấm vào nút và chọn để ở lại trên trang, sau đó tất cả các nút/liên kết/chuyển hướng/tải lại tiếp theo sẽ kích hoạt "onbeforeunload" Bạn được chào đón để đến với công việc của riêng bạn xung quanh cho "lỗi" (vì thiếu tốt hơn điều khoản) để làm cho nó để nó sẽ không gây ra phản ứng đó nếu người dùng quyết định ở lại trên trang. Tuy nhiên, nó đang làm việc và thực hiện những gì bạn yêu cầu cho nó để làm trong môi trường thử nghiệm.
Dưới đây là các mã:
$(document).ready(function() {
$('.testButton').click(function() {
window.onbeforeunload = function() {
return "Enter your message here...";
}
});
});
EDIT:
Vì vậy, sau khi nghiên cứu những cách khác để làm điều tương tự, tôi đã đi qua một cách khác để buộc một sự kiện vào nút sử dụng .Trên jQuery() phương pháp. Mã có thể được nhìn thấy here, xác minh rằng mã cũ đã được nhận xét. Một lần nữa, cùng "lỗi" như trước, nhưng vẫn cung cấp chức năng được yêu cầu.
Dưới đây là giải pháp thay thế:
$(document).ready(function() {
$('.testButton').on("click", function (event) {
window.onbeforeunload = function() {
return "Enter your message here...";
}
});
});
Nguồn
2013-01-29 21:44:57
Trên cả Firefox và IE8 tôi nhận được một lỗi trên cuộc gọi đến window.onbeforeunload. Lỗi Firefox là "window.onbeforeunload không phải là một hàm" và IE quay trở lại với "Object không hỗ trợ thuộc tính hoặc phương thức này" – mutex
Ok, do đó, vấn đề là plugin gắn một trình xử lý sự kiện thông qua 'addEventListener' /' attachEvent' và không trực tiếp thông qua 'window.onbeforeunload'. Tôi đoán bạn sẽ phải sửa đổi mã plugin để có tham chiếu đến hàm 'beforeunload'. – casablanca
Cảm ơn!Điều đó hoạt động ngay bây giờ. Bất kỳ đề xuất về tránh sử dụng một toàn cầu cho xử lý mặc dù? – mutex