Вы не можете определить разницу между закрываемым браузером и обновленным окном/вкладкой, содержащей обновленную страницу. Информация просто недоступна.
Для вашего конкретного случая использования кажется, что вы можете использовать session storage, а не локальное хранилище. Точка хранения сеанса состоит в том, что она истекает, когда пользователь выполнил эту страницу. Вы можете попробовать, что с this example:
display("Existing <code>sessionStorage.foo</code>: " + sessionStorage.foo);
sessionStorage.foo = new Date().toISOString();
display("New value set: " + sessionStorage.foo);
Для меня на Firefox, Chrome и IE9 (так предположительно IE9 +), освежающий не ясно хранения сессий, но закрытие вкладки делает.
В качестве альтернативы вы можете установить временную метку в локальном хранилище при разгрузке страницы (от onbeforeunload
), а когда вы вернетесь на страницу в будущем, если эта метка времени достаточно устарела, очистите хранилище и начинайте свежий. Это не очищает магазин, когда вы покидаете страницу, но делает act, как если бы это было, когда вы возвращались после интервала.
Возможный дубликат http://stackoverflow.com/questions/1631959/browser-window-close-event –
@Moogs: Аспект хранения * может * сделать это отличным. –
Зачем беспокоиться об использовании локального хранилища, если вы на самом деле не собираетесь ничего хранить? – jmort253