2016-02-24 14 views
5

Znalazłem tu kilka pytań dotyczących StackOverflow dotyczących konkretnych funkcji przeglądarek prywatnych iOS Safari i sessionStorage i localStorage. Ale nie udało mi się znaleźć ostatecznego zasobu określającego wsparcie dla iOS Safari dla sessionStorage i localStorage podczas przeglądania prywatnego.iOS Safari Private Browsing localStorage i sessionStorage Support?

Jakie jest wsparcie dla tego lub czy istnieje jakiś konkretny zasób Apple oznaczający tę funkcjonalność? Ogólny konsensus jest taki, że localStorage nie jest w ogóle obsługiwany bez polyfill, czy to samo dotyczy sessionStorage?

Dziękuję bardzo!

Odpowiedz

4

nie sądzę istnieje specyficzny zasób dla iOS, ale tutaj jest oficjalna dokumentacja Apple:

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

I to pytanie StackOverflow jest bardzo przydatna, a także:

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

Ogólnie, podczas rozwiązywania dla sessionStorage i localStorage, spróbuj faktycznie rozwijać lokalnie z Safari na telefonie z otwartym Web Inspector. Powodzenia :)

6

Tak, to samo dotyczy sessionStorage i localStorage.

Jest doskonały Gist Paula Irlandczyków wyjaśniając historię wydania:

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

Najlepszym rozwiązaniem jeśli potrzebujesz tylko jednego z nich:

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

Lub, aby go pracuj dla obu, rozwiązanie zalecane przez MDN jest bardziej ogólne: 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; 
    } 
}