Выходное сообщение в стиле Gmail - PullRequest
3 голосов
/ 18 ноября 2011

Я понимаю, что это, скорее всего, дубликат, но я уже несколько дней гуглю / думаю, и не могу найти удовлетворительного ответа. Если на SO уже есть ответ, пожалуйста, пришлите меня туда.

У меня есть клиент, который настаивает на появлении всплывающего сообщения, подтверждающего, что он хочет покинуть сайт, как это делает Gmail. (Я уже пытался спорить против этого. Он неподвижен, поэтому не комментируйте, как это плохо, пожалуйста.)

Я нашел этот код:

<script>
    window.onbeforeunload = function() {
        return 'Are you sure you want to exit?';
    }
<script>

Но он работает независимо от того, что я делаю - перезагружаю страницу, нажимаю навигацию и т. Д.

Я просто хочу, чтобы сообщение отображалось, когда пользователь закрывает вкладку / браузер. Я подозреваю, что я упускаю что-то простое, но я не эксперт по Javascript.

Любая помощь будет принята с благодарностью.

Спасибо

РЕДАКТИРОВАТЬ

Вот что работает довольно хорошо. Спасибо всем!

var isLeavingSite = true;

//This would be called on each link/button click that navigates
$('a, input[type="submit"]').click(function(){
    isLeavingSite = false;
});

window.onbeforeunload = function() {
    if(isLeavingSite)
    return 'Are you sure you want to exit?';
}

Ответы [ 3 ]

1 голос
/ 18 ноября 2011

Хотя это может быть значительный объем работы (в зависимости от того, как написан ваш сайт), вы можете сделать что-то вроде этого (псевдокод):

var isLeavingSite = true;

//This would be called on each link/button click that navigates
function GlobalLinkHandler()
{
    isLeavingSite = false;
}

window.onbeforeunload = function() {
    if(isLeavingSite)
    return 'Are you sure you want to exit?';
}

Если вы используете jQuery, вы можете использовать приведенный ниже код для переключения флага isLeavingSite:

$('a, input[type="submit"]').click(function(){ isLeavingSite = false; });
1 голос
/ 18 ноября 2011

Что нужно сделать, так это использовать переменную, которую вы установили, если на сайте нажата какая-либо ссылка, а затем в событии onbeforeunload проверить, установлена ​​ли эта переменная, означающая, что они нажали на ссылку, или не установлена, означая, что они 'повторное закрытие вкладки.

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

0 голосов
/ 18 ноября 2011

Если вы используете jQuery, попробуйте это Подтвердите перед выходом

...