2013-04-08 18 views
5

Tôi cần cảnh báo người dùng rằng họ sẽ mất thông tin khi rời khỏi trang. Điều này có thể dễ dàng thực hiện bằng cách sử dụng sự kiện onbeforeunload. Vấn đề của tôi là tôi muốn thực hiện một số hành động nếu người dùng quyết định rời khỏi.Có thể ghi lại câu trả lời của người dùng khi sử dụng xác nhận onbeforeunload không?

Dưới đây là một ví dụ (Tôi đang sử dụng jquery vì nó nạp anyway):

$(window).on('beforeunload', function(e){ 
    return "Do you really want to leave?"; 
}); 

Những gì tôi muốn làm là một cái gì đó như thế này (mã này không làm việc, tôi biết, nó chỉ là một ví dụ để minh họa cho những gì tôi đang cố gắng để làm):

$(window).on('beforeunload', function(e){ 
    // Ask for user confirmation 
    var bUserAnswer = confirm("Do you really want to leave?"); 

    if(bUserAnswer) 
    { 
     // Do something... 
    } 
    else 
    { 
     // Do something else... 
    } 
    // Close everything if the user decides to leave... 
    return bUserAnswer; 
}); 

tôi không có ý tưởng nếu những gì tôi đang cố gắng để làm ở đây thậm chí có thể ... Googling xung quanh đã không cho tôi bất kỳ dấu hiệu một cách này hay cách khác vì vậy tôi đang chuyển sang nhóm chuyên gia yêu thích của tôi!

Bất kỳ ý tưởng nào về cách tôi có thể làm điều đó?

Cảm ơn!

+0

trùng lặp: http://stackoverflow.com/questions/276660/how-can-i -override-the-onbeforeunload-dialog-and-replace-it-with-my-own – hereandnow78

+0

Vui lòng đọc câu hỏi của tôi một cách chính xác. Tôi không hỏi làm thế nào để làm một "để lại xác nhận trang" nhưng làm thế nào để làm một số hành động theo kết quả của "để lại xác nhận trang" ... – Gabriel

+0

câu hỏi của bạn phần nào được trả lời trong chủ đề đó. những gì bạn muốn làm là không thể, vì lý do an ninh ... – hereandnow78

Trả lời

10

Khi rời khỏi trang, các sự kiện beforeunloadunload thi hành theo thứ tự đó. Tất nhiên, nếu sự kiện beforeunload không hoàn thành, sự kiện unload sẽ không.

Cách sự kiện beforeunload không hoàn thành là khi người dùng nhấp vào nút "Ở trên trang" thay vì "Rời khỏi trang" (nếu hộp thoại đó được hiển thị cho họ, như trong mã của bạn). Vì vậy, nếu bạn biết rằng khả năng họ không rời khỏi trang sẽ luôn được trình bày cho họ, cách duy nhất để sự kiện unload thực thi là nếu sự kiện beforeunload không bị ngăn cản (bởi người dùng).

Do đó, bạn có thể đặt bất kỳ mã nào bạn muốn thực thi khi người dùng thực sự chọn rời khỏi trang trong sự kiện unload.

Đối biết nếu người dùng quyết định ở lại trên trang, tôi không chắc chắn làm thế nào để bắt nó :)

+1

Điều này làm việc hoàn hảo cho tôi! Cảm ơn! – Gabriel

+1

ian tuyệt vời đã cứu ngày của tôi, đó là sự khác biệt tinh khiết giữa onbeforeunload và onunload. –