IOS Safari Частный просмотр localStorage и поддержка SessionStorage?
Я нашел несколько вопросов здесь, в StackOverflow, посвященных конкретным функциям с помощью iOS Safari Private Browsing и sessionStorage
и localStorage
. Но я не смог найти окончательный ресурс, обозначающий поддержку, которую iOS Safari имеет для sessionStorage
и localStorage
при приватном просмотре.
Какая поддержка для этого или есть какой-то конкретный ресурс от Apple, обозначающий эту функциональность? Общий консенсус в том, что localStorage
не поддерживается вообще без polyfill, делает то же самое для sessionStorage
?
Большое вам спасибо!
Ответы
Ответ 1
Я не думаю, что есть какой-то конкретный ресурс для iOS, но здесь официальная документация Apple:
https://developer.apple.com/library/safari/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/Name-ValueStorage/Name-ValueStorage.html
И этот вопрос StackOverflow также очень полезен:
QuotaExceededError: исключение Dom 22: Была сделана попытка добавить что-то к хранилищу, которое превысило квоту
В общем, при решении для sessionStorage
и localStorage
попробуйте на самом деле разрабатывать локально с Safari на вашем телефоне при открытии Web Inspector. Удачи:)
Ответ 2
Да, это же относится к sessionStorage
и localStorage
.
Есть отличный Gist Paul Irish, объясняющий историю проблемы:
https://gist.github.com/paulirish/5558557
Лучшее решение, если вам нужен только один из них:
function isLocalStorageEnabled() {
try {
var mod = '__storage_test__';
localStorage.setItem(mod, mod);
localStorage.removeItem(mod);
return true;
} catch(e) {
return false;
}
}
Или, чтобы это работало для обоих, рекомендованное MDN решение является более общим:
https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API
function storageAvailable(type) {
try {
var storage = window[type];
var x = '__storage_test__';
storage.setItem(x, x);
storage.removeItem(x);
return true;
}
catch(e) {
return false;
}
}