Перво-наперво, вам нужно проверить, чтобы убедиться, что localStorage включен.Я бы рекомендовал сделать это следующим образом:
var localStorageEnabled = false;
try { localStorageEnabled = !!localStorage; } catch(e) {};
Да, вы можете (в некоторых случаях) просто проверить, является ли localStorage членом объекта окна.Тем не менее, существуют опции песочницы iframe (помимо прочего), которые выдают исключение, если вы даже пытаетесь получить доступ к индексу localStorage.Таким образом, по причинам передового опыта, это лучший способ проверить, включен ли localStorage.Затем вы можете просто очистить localStorage следующим образом.
if (localStorageEnabled) localStorage.clear();
Например, вы можете очистить localStorage после того, как в браузерах webkit произойдет ошибка.
// clears the local storage upon error
if (localStorageEnabled)
window.onerror = localStorage.clear.bind(localStorage);
В приведенном вышеНапример, вам нужен .bind(window)
, потому что без него функция localStorage.clear
будет работать в контексте объекта window
, а не объекта localStorage
, что заставляет его молча работать.Чтобы продемонстрировать это, посмотрите на приведенный ниже пример:
window.onerror = localStorage.clear;
совпадает с:
window.onerror = function(){
localStorage.clear.call(window);
}