Der folgende Code warnt ls exist
in IE7:
if(window.localStorage) {
alert('ls exists');
} else {
alert('ls does not exist');
}
Der lokale Speicher wird von IE7 nicht wirklich unterstützt. Dies wird jedoch immer noch durch Warnungen angezeigt. Möglicherweise liegt dies daran, dass ich IE9 im IE7-Browser und im Dokumentmodus mit dem IE9-Entwicklertool verwende. Oder vielleicht ist dies nur der falsche Weg, um zu testen, ob LS unterstützt wird. Was ist der richtige Weg?
Ich möchte Modernizr auch nicht verwenden, da ich nur wenige HTML5-Funktionen verwende und das Laden eines umfangreichen Skripts es nicht wert ist, nur die Unterstützung für diese wenigen Dinge zu erkennen.
Sie müssen nicht modernizr verwenden, aber Sie können ihre Methode verwenden, um festzustellen, ob localStorage
unterstützt wird
modernizr bei github
Test auf localStorage
// In FF4, if disabled, window.localStorage should === null.
// Normally, we could not test that directly and need to do a
// `('localStorage' in window) && ` test first because otherwise Firefox will
// throw bugzil.la/365772 if cookies are disabled
// Also in iOS5 & Safari Private Browsing mode, attempting to use localStorage.setItem
// will throw the exception:
// QUOTA_EXCEEDED_ERRROR DOM Exception 22.
// Peculiarly, getItem and removeItem calls do not throw.
// Because we are forced to try/catch this, we'll go aggressive.
// Just FWIW: IE8 Compat mode supports these features completely:
// www.quirksmode.org/dom/html5.html
// But IE8 doesn't support either with local files
Modernizr.addTest('localstorage', function() {
var mod = 'modernizr';
try {
localStorage.setItem(mod, mod);
localStorage.removeItem(mod);
return true;
} catch(e) {
return false;
}
});
aktualisiert mit aktuellem Quellcode
if(typeof Storage !== "undefined")
{
// Yes! localStorage and sessionStorage support!
// Some code.....
}
else
{
// Sorry! No web storage support..
}
Auch ich möchte Modernizr nicht verwenden, da ich nur wenige HTML5 .__ verwende. Funktionen und das Laden eines großen Skripts ist es nicht wert, Unterstützung für diese wenigen Dinge.
Um die Dateigröße von Modernizr zu verringern, passen Sie die Datei unter http://modernizr.com/download/ an Ihre Bedürfnisse an. Eine Nur-LocalStorage-Version von Modernizr ist 1,55 KB groß.
Diese Funktion funktioniert gut:
function supports_html5_storage(){
try {
return 'localStorage' in window && window['localStorage'] !== null;
} catch(e) {
return false;
}
}
Quelle: www.diveintohtml5.info
window.localStorage!==undefined
versuchen:
if(window.localStorage!==undefined){
//Do something
}else{
alert('Your browser is outdated!');
}
Sie können auch typeof window.localStorage!=="undefined"
verwenden, aber die obige Anweisung macht dies bereits
Ich habe es in den Antworten nicht gesehen, aber ich finde es gut zu wissen, dass Sie Vanilla JS oder jQuery für solche einfachen Tests problemlos verwenden können. Während Modernizr sehr hilft, gibt es saubere Lösungen ohne.
Wenn Sie jQuery verwenden, können Sie Folgendes tun:
var _supportsLocalStorage = !!window.localStorage
&& $.isFunction(localStorage.getItem)
&& $.isFunction(localStorage.setItem)
&& $.isFunction(localStorage.removeItem);
Oder mit reiner Vanille JavaScript :
var _supportsLocalStorage = !!window.localStorage
&& typeof localStorage.getItem === 'function'
&& typeof localStorage.setItem === 'function'
&& typeof localStorage.removeItem === 'function';
Dann würden Sie einfach ein IF tun, um die Unterstützung zu testen:
if (_supportsLocalStorage) {
console.log('ls is supported');
alert('ls is supported');
}
Die ganze Idee ist also, wenn Sie JavaScript-Funktionen benötigen, würden Sie zuerst das übergeordnete Objekt und dann die Methoden testen, die Ihr Code verwendet.
Try catch wird die Arbeit erledigen:
try{
localStorage.setItem("name",name.value);
localStorage.setItem("post",post.value);
}
catch(e){
alert(e.message);
}
if (window.localStorage){
alert('localStorage is supported');
window.localStorage.setItem("whatever", "string value");
}
Versuchen:
if(typeof window.localStorage != 'undefined') {
}
Wenn Sie die Antwort von Andrea ändern, um einen Getter hinzuzufügen, ist die Verwendung einfacher. Mit dem Folgenden sagen Sie einfach: if(ls)...
var ls = {
get: function () {
var test = 'test';
try {
localStorage.setItem(test, test);
localStorage.removeItem(test);
return true;
} catch(e) {
return false;
}
}
};
var ls = {
get: function () {
var test = 'test';
try {
localStorage.setItem(test, test);
localStorage.removeItem(test);
return true;
} catch(e) {
return false;
}
}
};
function script(){
if(ls){
alert('Yes');
} else {
alert('No');
}
}
<button onclick="script()">Local Storage Support?</button>