подтвердите оповещение, пришедшее дважды, когда событие onbeforeload - PullRequest
1 голос
/ 25 мая 2011

У меня есть поле подтверждения на событии перед загрузкой - код выглядит следующим образом:

window.onbeforeunload = function(){
            //alert('leaving ... ' + is_edited );

            if (is_edited == true) {
                return confirm('Are you sure you want to navigate away from this page? \n\n Press OK to continue, or Cancel to stay on the current page.');
            }

        };

Проблема в том, что - дважды появляется предупреждение о подтвержденииЯ искал на stackoverflow и получил много вопросов по этой проблеме.Но мое несколько другое.Это не то же самое подтверждение, показывающее дважды.Для FF сообщение такое же, но для Crome во втором окне подтверждения сообщение: false.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Предполагается, что обработчик onbeforeunload возвращает строку.Независимо от того, будет ли строка показана пользователю или нет, зависит от браузера.

Ваша функция возвращает результат вызова «verify ()», логическое значение.Firefox 4 не показывает возвращенную строку из обработчика beforeunload, в то время как другие браузеры все еще показывают.Таким образом, ваша функция устанавливает поле «Подтвердить», получает результат и возвращает его.Затем браузер выдает подтверждение «beforeunload», которое в некоторых браузерах будет содержать строковое значение, возвращаемое вашим обработчиком («true» или «false»).

Здесь это документация Mozilla для события и его обработчик.

0 голосов
/ 25 мая 2011

Лучше использовать jQuery здесь для кросс-браузерной функциональности.

Диалог jQuery UI OnBeforeUnload

...