Как я могу переопределить диалоговое окно OnBeforeUnload и заменить его моим собственным?

339
задан Danil Speransky 31 August 2012 в 21:02
поделиться

2 ответа

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

window.onbeforeunload = function() {
    return 'You have unsaved changes!';
}

Вот ссылка к этому от Microsoft:

, Когда строка присвоена returnValue свойству window.event, диалоговое окно появляется, который дает пользователям опцию остаться на текущей странице и сохранить строку, которая была присвоена ему. Оператор по умолчанию, который появляется в диалоговом окне, "Действительно ли Вы, уверен, что Вы хотите перейти далеко от этой страницы?... Нажмите OK, чтобы продолжить, или Отменить для пребывания на текущей странице". не может быть удален или изменен.

проблема, кажется:

  1. , Когда onbeforeunload будет назван, это возьмет возвращаемое значение обработчика как window.event.returnValue.
  2. Это тогда проанализирует возвращаемое значение как строку (если это не будет пустым).
  3. С тех пор false анализируется как строка, диалоговое окно будет стрелять, который тогда передаст соответствующее true / false.

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

Дополнительные примечания по jQuery:

  • Установка события в jQuery может быть проблематичной, поскольку это позволяет другому onbeforeunload события происходить также. Если бы Вы желаете только Вашего разгружать событие для появления, я придерживался бы простого JavaScript для него.
  • jQuery не имеет ярлыка для [1 111], таким образом, необходимо было бы использовать дженерик bind синтаксис.

    $(window).bind('beforeunload', function() {} );
    

09/04/2018 Редактирования: пользовательские сообщения в onbeforeunload диалоговых окнах удерживаются от использования начиная с хрома 51 (cf: информация о версии )

296
ответ дан aldoWan 23 November 2019 в 00:36
поделиться

А как насчет использования специализированной версии команды «привязать» «один». Когда обработчик событий запускается в первый раз, он автоматически удаляется как обработчик событий.

$(window).one("beforeunload", BeforeUnload);
1
ответ дан 23 November 2019 в 00:36
поделиться
Другие вопросы по тегам:

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