2016-04-05 1 views
0

Я хочу использовать окно предупреждения Impromptu в качестве поля подтверждения при перезагрузке моей страницы. Сейчас я использую этот обычный javascript.Как использовать Impromptu в качестве подтверждения для подтверждения

window.onbeforeunload = function(event) { 
    return confirm("Confirm refresh"); 
}; 

Однако я больше не хочу использовать это, так есть ли возможность загрузить экспромт окно подтверждения на перезагрузки страницы?

Заранее благодарен

ответ

0

Короткий ответ: нет.

Длинный ответ: Javascript не может дождаться обратного вызова (или до) разгрузки. Если событие вернется, страница выгрузится. Имея это в виду, пользовательский флажок подтверждения всегда должен ждать взаимодействия с пользователем, и это не может блокироваться. Таким образом, Impromptu (или любой другой плагин, если на то пошло) не сможет предотвратить разгрузку страницы. Существует своеобразное исключение для собственных функций (таких как alert, confirm и даже XMLHttpRequest ...), которые блокируются или могут быть заблокированы, чтобы их можно было выполнить на странице загрузки.

The Mozilla docs научить нас, что современные браузеры даже предотвращают создание диалогов в window.onbeforeunload. Если я проверить свою функцию в хроме создает диалог:

Подтверждение навигации

ложные

Вы уверены, что хотите покинуть эту страницу?

Лучшее, что вы можете сделать, это что-то вроде:

window.onbeforeunload = function() { 
    return "There is more to see on this site!"; 
}; 

Это создаст окно, как:

Подтверждение навигации

Существует больше, чтобы видеть на этом сайте!

Вы действительно хотите оставить страницу?

Единственный способ, которым вы можете что-то сделать на перезагрузке страницы, - это перезагрузить страницу, таким образом, на вновь запрошенной странице.

Примечание: Я очень обескураживаю использование события onbeforeunload, это беспокоит ваших пользователей дополнительным всплывающим окном, которое они должны щелкнуть, прежде чем закрывать страницу. Мне очень не нравится, когда сайты делают это со мной, это похоже на спам.