Вопрос JavaScript: Onbeforeunload или Onunload?
Поэтому я хочу сохранить некоторую информацию в localstorage браузера, когда страница обновляется или пользователь выходит из страницы для будущего использования. Я подумал, что я бы использовал Javascript для обнаружения события и сохранения состояния посещения страницы.
Теперь мое затруднительное положение: использовать метод Onbeforeunload или Onunload для достижения этой цели?
Спасибо
Ответы
Ответ 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... но все же:)