Окно регистрации/закрытия окна Javascript перед закрытием окна/вкладки

Об этом, возможно, задавали раньше, но, насколько я помню, на тот момент вопрос не был удовлетворительным ответом ^^

Как я могу зарегистрировать событие закрытия окна или вкладки с помощью Javascript? Я пробовал body.onclose и body.onunload, а также десятки других, чьи имена я сам составил и подумал, что они могут существовать, но ни одна из них не работала, или, если это произошло, она запускается только после закрытия окна или вкладки,

Вопрос: Есть ли способ зарегистрировать такое событие до закрытия окна или вкладки? Он даже не совместим со всеми браузерами, если он работает с Firefox.

Ответ 2

window.onbeforeunload = function (e) {
  var e = e || window.event;

  // For IE and Firefox
  if (e) {
    e.returnValue = 'Any string';
  }

  // For Safari
  return 'Any string';
};

Ответ 3

У нас нет Onclose, но у нас есть OnbeforeUnload. Даже я ищу одно и то же событие, но не повезло.

Ответ 4

Unload и beforeUnload оказывают негативное влияние на "кеш страницы" (также известный как "back forward cache" ). Это специальный кеш, который сохраняет некоторое дополнительное состояние, когда вы перемещаетесь далеко от страницы, чтобы его можно было легко перераспределить, когда вы перемещаетесь "назад" (или открываете вкладку). Если вы когда-либо задавались вопросом, почему некоторые поля формы сохраняют свое содержимое, когда вы нажимаете "назад", а некоторые нет - это часто является причиной этой причины.

Вероятно, вам стоит взглянуть на события "pageshow" и "pagehide" в Firefox и WebKit. IE не имеет эквивалента кэша страниц, поэтому в этой среде вы должны быть в порядке, чтобы использовать до/выгрузить. Несмотря на Опера ранней версии, страницы и сводная информация превратили ее в Спецификация HTML5