Сообщение OnUnload, необходимое для внешних ссылок - PullRequest
9 голосов
/ 27 мая 2010

Мне нужен скрипт сообщения, который будет появляться только тогда, когда люди покидают текущую веб-страницу, а не текущий веб-сайт.

Когда люди покидают сайт полностью, появляется сообщение, и им нужно нажать кнопку OK, чтобы остаться на текущей странице (и отменить, чтобы покинуть сайт).

Скрипт может не запускаться, когда люди фактически остаются на сайте или когда они нажимают на внутренние ссылки или страницы.

Можно ли это сделать?

Ответы [ 3 ]

6 голосов
/ 28 мая 2010

Проверьте это очень простой пример решения . Он устанавливает обработчик onbeforeunload, но затем удаляет его, если пользователь нажимает внутреннюю ссылку. Ниже приведена общая версия кода из примера решения.

HTML

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

JS (использует jQuery ):

window.onbeforeunload = function(){
    return "Are you sure you want to leave our website?";
}
$(function(){
    $('a, input, button').click(function(){
            window.onbeforeunload = null;
    });
});
1 голос
/ 25 сентября 2012

В большинстве случаев вам не нужно всплывающее окно для всех событий, кроме одного: пользователь закрывает окно.

Вот мое решение для этого:

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

$(document).on('click keydown', function(){
    $(window).off('beforeunload');
});
1 голос
/ 16 февраля 2012

У меня похожая проблема. Однако в моем случае это сообщение должно было быть переведено в соответствии с языком пользователя, если кто-нибудь нажмет F5 или закроет окно.

Следуйте моему маленькому примеру.

<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>
...