Osama Abu Sitta Ответов: 3

Как создать диалоговое окно подтверждения на странице выхода из chrome?


Я знаю, что есть много вопросов по этому поводу, но ничто не отвечает мне правильно. Я хочу показать диалоговое окно подтверждения, когда пользователь покидает страницу. Если пользователь нажмет кнопку Отмена, он останется на странице, а если ОК, то внесенные им изменения будут откатаны вызовом метода. Я сделал вот так:

var _AreyousureLeaving = "Are you sure you want to leave?";
window.onbeforeunload = function (evt) {
                var message = _AreyousureLeaving;
                  if (typeof evt == 'undefined') {
                    evt = window.event;
                }
                if (evt) {
                    confirm(_AreyousureLeaving);
                    evt.returnValue = message;
                }
                return message;  
        }


Этот код отлично работает в IE и Firefox. Но этот код не работает в Chrome. утверждения подтверждают(_AreyousureLeaving); не работает.

если есть какой-то способ контролировать это всплывающее окно? Спасибо

Robert Welliever

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

3 Ответов

Рейтинг:
1

Member 13448898

$(window).on('beforeunload', function () { return 'Пожалуйста, оставайтесь на этой странице'; });
Я использую код, но по умолчанию msg alert отображается только как"изменения, которые вы сделали, не могут быть сохранены". Обновите мою страницу в то время, как отображать мои собственные комментарии отображать предупреждение в моем браузере.


Richard Deeming

В каком смысле это должно быть "решением" вопроса?!

Рейтинг:
0

Zubairk1990

Привет,

Пожалуйста, обратитесь к приведенному ниже коду его wroking fine с I. E, Mozila Firefox и chrome..

<script type="text/javascript" >
        window.onbeforeunload = function () {
            return "Do you want to leave?"
        }

        // A jQuery event (I think), which is triggered after "onbeforeunload"
        $(window).unload(function () {
            alert("Do Reset..");
            //I will call my method
        });
   </script>




Спасибо
Зубайр


Osama Abu Sitta

Я знаю, что этот код работает, но я хочу создать сообщение подтверждения с помощью ok /cancel и
Если пользователь нажмет кнопку Отмена он останется на странице и если ОК я хочу сделать функцию перед тем как покинуть страницу
Спасибо!

/\jmot

<script type="text/javascript" >
window.onbeforeunload = функция () {
возвращение "ты хочешь уйти?"
}

// Событие jQuery (я думаю), которое запускается после "onbeforeunload"
$(window).unload(функция () {
если(убедитесь, ("сбросить..??"))
{
предупреждение("вы нажимаете кнопку ОК");
}
еще
{
предупреждение("вы нажимаете кнопку Отмена");
}
//Я назову свой метод
});
</script>

Рейтинг:
0

Robert Welliever

Есть ли у вас "_AreyousureLeaving", определенный в глобальной области видимости? Ваш код выглядит немного шатким, используя локальную переменную "message", которая не служит определенной цели, и вы используете устаревшее событие.returnValue. Однако у меня была аналогичная проблема, и я обнаружил, что Chrome автоматически блокирует диалоги оповещения и подтверждения в событии onunload. Я никогда не просматривал источник jQuery, чтобы увидеть, как они решили эту проблему, но если вы используете jQuery, он должен решить вашу проблему. Подобный этому:

$(window).on('beforeunload', function () { return 'Пожалуйста, оставайтесь на этой странице'; });

Удачи.


Osama Abu Sitta

Я определил _AreyousureLeaving в глобальной области видимости
ошибка возникает при подтверждении сообщения только в chrome

Robert Welliever

Если вы щелкните правой кнопкой мыши Chrome при запуске, затем "проверить элемент", перейдите на вкладку "ресурсы", нажмите "фреймы" и перейдите туда, где должно выполняться ваше событие, вы увидите, что Chrome блокирует его и выдает ошибку. Вы не можете предотвратить это, поэтому вам нужно отправить всплывающее окно до того, как onunload будет запущен. jQuery beforeunload срабатывает раньше onunload, но имеет почти такой же эффект. Если вы поместите свою переменную _AreyousureLeaving прямо туда, где я поставил "Пожалуйста, оставайтесь на этой странице" в приведенном выше фрагменте кода, она должна работать так, как вы намереваетесь.