window.beforeunload звонил дважды в Firefox - как обойти это?

Хороший ресурс для обучения молодых людей является бесплатной электронной книгой, "Изобретают собственные игры с Python":

http://pythonbook.coffeeghost.net/book1/IYOCGwP_book1.pdf

5
задан Zarkonnen 26 November 2009 в 00:50
поделиться

5 ответов

Это определенно ошибка FF. Я сообщил об этом на https://bugzilla.mozilla.org/show_bug.cgi?id=531199

1
ответ дан 14 December 2019 в 19:16
поделиться

Установите переменную в обработчике, чтобы диалоговое окно не появлялось во второй раз. Затем используйте setTimeout, чтобы сбросить его.

1
ответ дан 14 December 2019 в 19:16
поделиться

Создайте глобальную переменную, для которой установлено значение true внутри обработчика. Показывать предупреждение / всплывающее окно, только если эта переменная имеет значение false.

0
ответ дан 14 December 2019 в 19:16
поделиться

Лучшее решение, которое я нашел, - использовать глобальную переменную flag, которая сбрасывается через столько миллисекунд, скажем, 500 (это гарантирует, что функция может быть позвонил еще раз, но не сразу после его появления).

См. Последний код в:

http://social.msdn.microsoft.com/Forums/en/sharepointinfopath/thread/13000cd8-5c50-4260-a0d2-bc404764966d

1
ответ дан 14 December 2019 в 19:16
поделиться
<script type="text/javascript">
var onBeforeUnloadFired = false;

window.onbeforeunload = function ()
{
    if (!onBeforeUnloadFired) {
        onBeforeUnloadFired = true;
        event.returnValue = "You have attempted to leave this page.  If you have made any changes to the fields without clicking the Save button, your changes will be lost.  Are you sure you want to exit this page?";
   }

   window.setTimeout("ResetOnBeforeUnloadFired()", 10);
}

function ResetOnBeforeUnloadFired() {
   onBeforeUnloadFired = false;
}    
</script>
2
ответ дан 14 December 2019 в 19:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: