Window: beforeunload event

Этот перевод не завершён. Пожалуйста, помогите перевести эту статью с английского

Событие beforeunload запускается, когда окно, документ и его ресурсы вот-вот будут выгружены. Документ все еще виден, и событие в этот момент может быть отменено.

Всплываемость Нет
Отменяемость Да
Интерфейс Event
Свойство обработчика событий onbeforeunload

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

В соответствии со спецификацией, для отображения диалогового окна подтверждения обработчик события должен вызватьpreventDefault() по событию.

Однако обратите внимание, что не все браузеры поддерживают этот метод, а некоторые требуют от обработчика событий реализации одного из двух старых методов:

  • назначение строки свойству returnValue события
  • возвращающий строку из обработчика событий.

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

Для борьбы с нежелательными всплывающими окнами браузеры могут не отображать подсказки, созданные в обработчиках событий beforeunload, за исключением случаев, когда страница была обработана или даже не отображается вообще.

Прикрепление обработчика/слушателя событий к window или document's beforeunload событие не позволяет браузерам использовать кэш навигации по страницам в памяти, наподобие Firefox's Back-Forward cache or WebKit's Page Cache.

В спецификации HTML указано, что вызовы window.alert(), window.confirm(), и window.prompt() методы могут быть проигнорированы во время этого события. Посмотреть HTML specification для более подробной информации.

Примеры

В HTML-спецификации указано, что авторы должны использовать метод Event.preventDefault(), а не Event.returnValue. Однако, это поддерживается не всеми браузерами.

window.addEventListener('beforeunload', (event) => {
  // Отмените событие, как указано в стандарте.
  event.preventDefault();
  // Хром требует установки возвратного значения.
  event.returnValue = '';
});

Спецификации

Specification Status Comment
HTML Living Standard
Определение 'beforeunload' в этой спецификации.
Живой стандарт
HTML5
Определение 'beforeunload' в этой спецификации.
Рекомендация Initial definition

Совместимость с браузерами

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
beforeunload eventChrome Полная поддержка 1Edge Полная поддержка 12Firefox Полная поддержка 1IE Полная поддержка 4Opera Полная поддержка 12Safari Полная поддержка 3WebView Android Полная поддержка 1Chrome Android Полная поддержка 18Firefox Android Полная поддержка 4Opera Android Полная поддержка 12Safari iOS Полная поддержка 1Samsung Internet Android Полная поддержка 1.0
Custom text support
УстаревшаяНестандартная
Chrome Нет поддержки ? — 51Edge Нет поддержки НетFirefox Нет поддержки ? — 44IE Полная поддержка ДаOpera Нет поддержки ? — 38Safari Нет поддержки ? — 9WebView Android Нет поддержки ? — 51Chrome Android Нет поддержки ? — 51Firefox Android Нет поддержки ? — 44Opera Android Нет поддержки ? — 41Safari iOS Нет поддержки НетSamsung Internet Android Нет поддержки ? — 5.0
Activation using event.returnValue = "string";
Устаревшая
Chrome Полная поддержка 30Edge Полная поддержка 12Firefox Полная поддержка ДаIE Полная поддержка ДаOpera ? Safari ? WebView Android Полная поддержка ДаChrome Android Полная поддержка ДаFirefox Android Полная поддержка ДаOpera Android Полная поддержка ДаSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка Да
Activation using event.preventDefault()Chrome Нет поддержки НетEdge Нет поддержки 12 — 79Firefox Полная поддержка ДаIE Полная поддержка 9Opera Нет поддержки НетSafari Полная поддержка 11WebView Android Нет поддержки НетChrome Android Нет поддержки НетFirefox Android Полная поддержка ДаOpera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android Нет поддержки Нет
Activation using return "string";
Устаревшая
Chrome Полная поддержка 1Edge Полная поддержка 12Firefox Полная поддержка 1IE Полная поддержка ДаOpera Полная поддержка 12Safari Полная поддержка 3WebView Android Полная поддержка ДаChrome Android Полная поддержка ДаFirefox Android Полная поддержка ДаOpera Android Полная поддержка ДаSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка Да

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Устаревшая. Не следует использовать в новых веб-сайтах
Устаревшая. Не следует использовать в новых веб-сайтах

Смотрите WindowEventHandlers/onbeforeunload для получения более подробной информации о том, как различные браузеры обрабатывают это событие.

См. также