2010-10-22 18 views
6

Tôi có thể hỏi người dùng Bạn có chắc chắn muốn rời khỏi trang không?Tôi làm cách nào để yêu cầu người dùng web xác nhận nếu anh ấy thực sự muốn rời khỏi trang?

Ví dụ: nếu bạn nhấp vào nút quay lại trong khi đặt câu hỏi về Stackoverflow?

+0

Câu hỏi của bạn không có ý nghĩa nhiều, bạn có nghĩa là nó kiểm tra câu hỏi mà không cần nhấn nút gửi? – Elliott

+0

Tôi nghĩ rằng anh ấy có nghĩa là hộp thoại xác nhận bạn nhận được khi bạn đang nửa chừng bằng cách viết một câu hỏi trên SO và nhấn nút quay lại trình duyệt của bạn –

+0

@Elliott, câu hỏi này có ý nghĩa rất nhiều. Nếu có văn bản trong hộp "Câu trả lời của bạn" và bạn điều hướng khỏi trang, ngay cả khi trình duyệt quay trở lại, nó sẽ cảnh báo bạn. –

Trả lời

4

Cách dễ nhất để thực hiện việc này là liên kết trình xử lý sự kiện với sự kiện JavaScript "dỡ tải". jQuery làm cho việc này rất dễ thực hiện với số .unload() event handler của nó. Trong phương thức bạn liên kết, bạn có thể kiểm tra xem liệu các trường biểu mẫu của trang có nhập văn bản hay không. Giả sử họ bật một cảnh báo thông báo cho người dùng rằng họ sẽ mất mọi dữ liệu chưa được lưu nếu họ điều hướng từ trang.

Phương pháp này sẽ kích hoạt cảnh báo bất cứ khi nào người dùng điều hướng khỏi trang vì bất kỳ lý do nào.

$(window).bind('beforeunload', function() { 
    alert('Handler for .beforeunload() called.'); 
}); 

Điều này rõ ràng không thân thiện với người dùng nhưng một vài sửa đổi nhanh có thể làm cho nó phù hợp với câu hỏi của bạn.

+0

cách chúng tôi sẽ làm gì nếu một người dùng đang chỉnh sửa gì đó? –

+2

Tôi nghĩ bạn sẽ thấy sự kiện 'unload' quá muộn để ngăn người dùng rời khỏi. Bạn cần sử dụng sự kiện 'onbeforeunload'. Ngoài ra, bạn không thể sử dụng jquery để liên kết với 'onbeforeunload' trong tất cả các trình duyệt – rojoca

+0

vì vậy bạn muốn nói sử dụng JavaScript thuần túy thay vì jquery vì khả năng tương thích của trình duyệt –

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