2016-02-24 23 views
5

ho trovato un paio di domande qui su StackOverflow affrontare funzionalità specifiche con iOS Safari Navigazione privata e sessionStorage e localStorage. Ma non sono stato in grado di trovare una risorsa definitiva che denoti il ​​supporto che iOS Safari ha per sessionStorage e localStorage durante la navigazione privata.iOS Safari Navigazione privata localStorage e sessionStorage Support?

Quale sostegno è per questo o c'è qualche risorsa specifica da parte di Apple che denota questa funzionalità? Il consenso generale è che localStorage non è supportato senza polyfill, lo stesso vale per sessionStorage?

Grazie mille!

risposta

4

Io non credo che ci sia alcuna risorsa specifica per iOS, ma qui è la documentazione ufficiale di Apple:

https://developer.apple.com/library/safari/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/Name-ValueStorage/Name-ValueStorage.html

E questa domanda StackOverflow è molto utile così:

QuotaExceededError: Dom exception 22: An attempt was made to add something to storage that exceeded the quota

In generale, quando si risolve il problema con sessionStorage e localStorage, provare a sviluppare in locale localmente con Safari sul telefono con Web Inspector aperto. Buona fortuna :)

6

Sì, lo stesso vale per sessionStorage e localStorage.

V'è un eccellente Gist da Paul Irish che spiega la storia della questione:

https://gist.github.com/paulirish/5558557

soluzione migliore se avete solo bisogno di uno di loro:

function isLocalStorageEnabled() { 
    try { 
     var mod = '__storage_test__'; 
     localStorage.setItem(mod, mod); 
     localStorage.removeItem(mod); 
     return true; 
    } catch(e) { 
     return false; 
    } 
} 

Oppure, per rendere più lavoro per entrambi, la soluzione raccomandata da MDN è più generica: 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; 
    } 
} 
Problemi correlati