2010-05-27 23 views
6

Tôi cần một tập lệnh thông báo sẽ chỉ xuất hiện khi mọi người rời khỏi trang web hiện tại chứ không phải trang web hiện tại.OnUnload tin nhắn cần thiết cho các liên kết bên ngoài

Khi mọi người rời khỏi trang web hoàn toàn, thông báo sẽ xuất hiện và họ sẽ cần nhấn nút OK để ở trang hiện tại (và hủy rời khỏi trang web).

Tập lệnh có thể không chạy khi mọi người thực sự ở lại trên trang web hoặc khi họ nhấp vào các liên kết hoặc trang nội bộ.

Việc này có thể thực hiện được không?

+0

ps webiste của tôi http://www.consolepro.net mà profides nintendo wii softmod mod mềm không có một kịch bản mà tạo ra các liên kết automaticly – tumtummetjes

+0

trùng lặp có thể có của [Hiển thị cảnh báo khi rời khỏi trang web, không chỉ là trang] (http://stackoverflow.com/questions/2365994/display-a-warning-when-leaving-the-site-not-just-the-page) – KyleMit

Trả lời

5

Khám phá this very basic example solution. Nó đặt trình xử lý onbeforeunload nhưng sau đó xóa nó nếu người dùng nhấp vào liên kết nội bộ. Dưới đây là một phiên bản chung của mã từ giải pháp ví dụ.

HTML:

<a href="internal_link.html">internal link</a> 
<a href="http://www.example.com">external link</a> 

JS (sử dụng jQuery):

window.onbeforeunload = function(){ 
    return "Are you sure you want to leave our website?"; 
} 
$(function(){ 
    $('a, input, button').click(function(){ 
      window.onbeforeunload = null; 
    }); 
}); 
+0

Vì vậy, những gì sẽ được tổng số mã iclude chuỗi truy vấn vv? và tôi không hiểu phần liên kết nội bộ? vì tôi không thể thay đổi các liên kết bên trong của chúng tôi được tạo ra tự động bởi giỏ hàng của chúng tôi – tumtummetjes

+0

và offcourse phần thẻ html phần cơ thể vv – tumtummetjes

+0

Dòng 'internal link 'chỉ đơn giản là một ví dụ về liên kết sẽ có cùng tên miền như' location.host' . Bất kỳ liên kết nào là "nội bộ" vào trang web của bạn (có nghĩa là nó không liên kết đến một tên miền khác) sẽ gây ra câu lệnh 'if'' this.href.match (location.host) 'để trả về' true', gây ra ' xử lý onbeforeunload' sẽ bị xóa, do đó ngăn chặn việc ngăn chặn thông báo "" Bạn có chắc chắn muốn thoát khỏi trang web của chúng tôi không? "' thông báo xuất hiện. [... bình luận tiếp tục dưới đây ...] – Adam

1

Tôi có một vấn đề tương tự. Tuy nhiên trong trường hợp của tôi, thông báo này được cho là phải dịch theo ngôn ngữ của người dùng, nếu có ai đó nhấn F5 hoặc đóng cửa sổ.

Làm theo ví dụ nhỏ của tôi.

<html> 
<head> 
<script type="text/javascript"> 
function closeThis() 
{ 
    if (window.confirm("Minha mensagem!")){ 
     window.close(); 
    } 
} 

function test() 
{ 
    // Add a warning in case anyone tries to navigate away or refresh the page 
    return confirm("Minha mensagem"); 
} 


</script> 
</head> 
<body onbeforeunload=test();> 
<p>Hello World! Press F5 or Close this Window</p> 
</body> 
</html> 
1

Trong hầu hết các trường hợp, bạn không cần cửa sổ bật lên cho tất cả sự kiện ngoại trừ một trường hợp: người dùng đóng cửa sổ.

Đây là giải pháp của tôi cho điều này:

$(window).on('beforeunload', function() { 
    /* whatever you want here */ 
} 

$(document).on('click keydown', function(){ 
    $(window).off('beforeunload'); 
}); 
Các vấn đề liên quan