Ответ 1
Вам нужно прослушать нестандартное событие beforeunload
. Это поддерживается почти всеми браузерами, ожидающими от Opera, которая, как известно, строго придерживается стандартов W3C.
Вот пример запуска:
window.onbeforeunload = function() {
return "Hey, you're leaving the site. Bye!";
};
Это сообщение появится в виде диалога подтверждения. Это сообщение появится прямо перед тем, как клиент выгрузит страницу. Это может быть закрытие браузера, но это также может быть простым навигационным действием, например, щелчком по ссылке или отправкой формы на странице!
Скорее всего, вы также захотите отключить его (просто установите null
) при каждом щелчке по внутренней ссылке или отправке внутренней формы. Вы не хотите раздражать конечных людей неинтуитивным поведением. Вы можете сделать это, прослушивая событие click
для желаемых ссылок и событие submit
желаемых форм. jQuery может быть здесь очень полезной, поскольку он делает это с помощью crossbrowser-совместимого способа, так что вам не нужно писать > 20 строк кода JS для этого:
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
window.onbeforeunload = function() {
return "You're leaving the site.";
};
$(document).ready(function() {
$('a[rel!=ext]').click(function() { window.onbeforeunload = null; });
$('form').submit(function() { window.onbeforeunload = null; });
});
</script>
Вам нужно всего лишь предоставить всем внешним ссылкам атрибут deacto standard rel="ext"
, чтобы обозначить, что это внешние ссылки.
<a href="http://google.com" rel="ext">Google</a>