Обнаружение закрытия браузера / вкладки с использованием JavaScript (или любого другого языка) - PullRequest
2 голосов
/ 30 марта 2012

Я искал этот вопрос в разных местах, но все, что они упоминают, это использование javascript window.unload & window.onbeforeunload .Кроме того, он не работает в Chrome в большинстве случаев, поскольку он блокируется.Тогда как Google удается это сделать.Если мы пишем письмо и по ошибке закрываем вкладку, Google выдает нам сообщение «Вы уверены?»коробка.Кто-нибудь может мне помочь? Что я на самом деле хочу сделать, так это попросить подтверждения у пользователя, когда он заполняет форму и по ошибке нажимает на закрытие вкладки.Если да, я позволю ему уйти, иначе он останется на странице и продолжит заполнять свою форму.

Ответы [ 3 ]

7 голосов
/ 30 марта 2012

Я протестировал, и пример, размещенный на MDN, четко работает в Chrome.

<script>
    window.onbeforeunload = function (e) {
        e = e || window.event;

        // For IE and Firefox prior to version 4
        if (e) {
            e.returnValue = 'Any string';
        }

        // For Safari
        return 'Any string';
    };

    function formSubmit() {
      window.onbeforeunload = null; 
   }
</script>

...

   <form onsubmit="formSubmit()">...</form>

Таким образом открывается диалоговое окно, которое не будет блокироваться всплывающим окном.блокировщик, как это происходит от клика пользователя.

2 голосов
/ 22 августа 2012

Если вы хотите спросить пользователя, хотят ли они покинуть страницу, когда они что-то изменили в формах на странице, взгляните на PageHasFormChanges .Имейте в виду, что я разработал его для использования на очень простых страницах, содержащих только одну или две формы.

PageHasFormChanges : Плагин jQuery для проверки того, что-либо изменилось в каком-либоСоздайте форму на странице и предупредите пользователя перед тем, как покинуть страницу.

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

JoelPurra.PageHasFormChanges.setOptions({
    leavingPageWarningMessage: "Are you sure?"
});

Если вы используете ajax для отправки форм, вы можете установить resetWarningOnPreventedSubmit в true.

1 голос
/ 30 марта 2012

Вы можете использовать функцию jquery unload :

$(window).unload(function() {
  alert('Handler for .unload() called.');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...