it-swarm.com.de

So können Sie feststellen, ob der Browser HTML5 Local Storage unterstützt

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.

78
TK123

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

90
Andreas
if(typeof Storage !== "undefined")
  {
  // Yes! localStorage and sessionStorage support!
  // Some code.....
  }
else
  {
  // Sorry! No web storage support..
  }
38
Brandon Ferrara

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ß.

15
Steve A

Diese Funktion funktioniert gut:

function supports_html5_storage(){
    try {
        return 'localStorage' in window && window['localStorage'] !== null;
    } catch(e) {
        return false;
    }
}

Quelle: www.diveintohtml5.info

14
juanra

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

8
Danilo Valente

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.

7
Ovi Trif

Try catch wird die Arbeit erledigen:

    try{
       localStorage.setItem("name",name.value);
       localStorage.setItem("post",post.value);
       }
    catch(e){
       alert(e.message);    
       }
3
Moniv
if (window.localStorage){

   alert('localStorage is supported');
   window.localStorage.setItem("whatever", "string value");

}
1
Darren

Versuchen: 

if(typeof window.localStorage != 'undefined') {
}
1
ErJab

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>
0
Ron Royston