Ваш лучший выбор - слушать нестандартное событие beforeunload
. Это поддерживается практически всеми браузерами, за исключением Opera, которая, как известно, очень строго придерживается стандартов W3C.
Пример запуска:
window.onbeforeunload = function() {
return "You're leaving the site.";
};
Это сообщение будет отображаться в виде диалога подтверждения.
В вашем конкретном случае вам необходимо отключить его (просто установите null
) при каждом нажатии навигационной ссылки или при отправке внутренней формы. Вы можете сделать это, прослушивая событие click
нужных ссылок и событие submit
нужных форм. jQuery может быть очень полезным здесь:
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; });
});
Вам нужно только дать всем внешним ссылкам стандартный атрибут defacto rel="ext"
, чтобы обозначить, что это внешние ссылки.
<a href="http://google.com" rel="ext">Google</a>