Предупреждение при закрытии окна
Интернет приобретает высокую популярность, как средство обмена информацией. Часто информация представляет большую ценность и вероятность её потери нужно свести к минимуму. Простой пример. Вы полчаса набивали важное письмо, а затем случайно нажали ссылку или закрыли вкладку и информация оказалась потеряна.
Современные сервисы (в том числе и почтовые) принимают определенные меры, чтобы такого не произошло. Например, можно сохранять письмо в черновик или пользоваться автосохранением. Также, с помощью JavaScript, можно дополнительно перестраховаться и выдавать пользователю диалог при попытке закрытия страницы. Например, если вы начали набирать письмо в почте Gmail, а потом пытаетесь закрыть вкладку, то увидите вот такой диалог (Firefox):
Научимся вызывать этот диалог. В реализации некоторых браузеров у объекта window есть событие beforeunload. Оно генерируется при попытке выгрузки текущего окна. Его стандартный обработчик и показывает этот диалог. К сожалению, не получится заменить это диалоговое окно собственным, однако, с помощью свойства returnValue можно изменить текст во второй строке предупреждения. Делается это так:
evt = evt || window.event;
evt.returnValue = "Вы же ничего не сохранили!";
}
В результате, при попытке покинуть страницу увидим:
Замечания:
- Лучше воспользоваться функцией для добавления обработчиков событий.
- Событие beforeunload генерируется в Gecko и IE. В Опере и Сафари описанная фича не работает.
- При некоторых вариантах закрытия окна браузер может опустить диалог. Например, при нажатии Ctrl+W в IE7.
- Дополнение от veb и pepelsbey: В Safari это уже предусмотрено. После набития текста в любое поле, окно браузера без этого предупреждения уже не закрыть.
© Все права на данную статью принадлежат порталу webew.ru. Перепечатка в интернет-изданиях разрешается только с указанием автора и прямой ссылки на оригинальную статью. Перепечатка в печатных изданиях допускается только с разрешения редакции.