Подтвердить что ты не робот

Вопрос JavaScript: Onbeforeunload или Onunload?

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

Теперь мое затруднительное положение: использовать метод Onbeforeunload или Onunload для достижения этой цели?

Спасибо

4b9b3361

Ответ 1

Почему бы не зарегистрировать его как для того, чтобы быть в безопасности? Просто попросите слушателя выполнить проверку, чтобы проверить, сохранены ли данные еще и рано.

Вот быстрый пример использования свойств события:

window.onunload = window.onbeforeunload = (function(){

  var didMyThingYet=false;

  return function(){
    if (didMyThingYet) return;
    didMyThingYet=true;
    // do your thing here...
  }

}());

Или вы можете использовать attachEvent:

(function(){

  var didMyThingYet=false;

  function listener (){
    if (didMyThingYet) return;
    didMyThingYet=true;
    // do your thing here...
  }

  window.attachEvent("onbeforeunload", listener);
  window.attachEvent("onunload", listener);    

}());

Ответ 2

Правильное место для этого - onunload. onbeforenload предназначен для использования, когда вам может потребоваться остановить пользователя от выхода из страницы, например, когда есть несохраненные данные.

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

Итак, мое предложение - это сделать onunload, проверить все браузеры.

Ответ 3

Я считаю, что Onbeforeunload - это безопасная ставка. Браузер не может полностью выполнить onunload script - например, если у вас есть предупреждение в onunload, хром не будет отображаться, если вы закроете окно.

Ответ 4

Из моего опыта: используйте onunload, поскольку Opera не поддерживает другое событие. Да, я знаю... Opera... но все же:)