2012-04-25 69 views
39

Cách yêu cầu xác nhận từ người dùng trước khi rời khỏi trang như trong gmail?Xác nhận trước khi đóng tab/trình duyệt

Tôi đã tìm kiếm cho câu hỏi này ở những nơi khác nhau, nhưng tất cả những gì họ đề cập là việc sử dụng javascript window.unload & window.onbeforeunload. Ngoài ra nó không hoạt động trong chrome hầu hết các lần như nó bị chặn.

+1

và bạn đã thử những gì? những gì không thành công? – Joseph

+0

Tôi đã thử window.unload & window.onbeforeunload nhưng chúng không hoạt động theo yêu cầu. –

+0

có thể trùng lặp của [Xác nhận hộp trước khi đóng tab] (http://stackoverflow.com/questions/2452963/confirm-box-before-closing-a-tab) –

Trả lời

74

Hãy thử điều này:

<script> 
window.onbeforeunload = function (e) { 
    e = e || window.event; 

    // For IE and Firefox prior to version 4 
    if (e) { 
     e.returnValue = 'Sure?'; 
    } 

    // For Safari 
    return 'Sure?'; 
}; 
</script> 

Đây là một công tác jsFiddle

+1

cũng điều này sẽ không bị vô hiệu hóa bởi bất kỳ trình duyệt vì nó bắt nguồn từ người dùng nhấp vào – gopi1410

+0

Cảm ơn rất nhiều! đây là những gì tôi cần. btw, yêu bản demo fiddle, chính xác những gì tôi muốn. –

+0

Xin chào ... mã của bạn đang hoạt động nhưng không thể phân biệt người dùng đã nhấp vào nút đóng của trình duyệt hay đã nhấp vào nút điều hướng để truy cập một số trang khác. – user3217843

6

Hãy thử điều này:

<script> 
    window.onbeforeunload = function(e) { 
     return 'Dialog text here.'; 
    }; 
</script> 

chi tiết ở đây MDN.

1

Tôi đã đọc nhận xét về câu trả lời được đặt là Được rồi. Hầu hết người dùng đều yêu cầu nút và một số liên kết nhấp phải được cho phép. Ở đây thêm một dòng được thêm vào mã hiện có sẽ hoạt động.

<script type="text/javascript"> 
    var hook = true; 
    window.onbeforeunload = function() { 
    if (hook) { 

     return "Did you save your stuff?" 
    } 
    } 
    function unhook() { 
    hook=false; 
    } 

Gọi để mở nút và liên kết mà bạn muốn cho phép. Ví dụ.

<a href="#" onClick="unhook()">This link will allow navigation</a> 
Các vấn đề liên quan