90 votes

Comment détecter si un navigateur prend en charge le stockage local HTML5

Le code suivant alertes ls exist dans IE7:

if(window.localStorage) {
    alert('ls exists');
} else {
    alert('ls does not exist');
}

IE7 n'a pas vraiment de support de stockage local mais il y a encore des alertes il n'. C'est peut-être parce que j'utilise IE9 dans le navigateur IE7 et des modes de document à l'aide de la IE9 outil de développement. Ou peut-être que c'est juste de la mauvaise façon de tester si LS est pris en charge. Quelle est la bonne façon?

Aussi je ne veux pas utiliser Modernizr sinus, je suis en utilisant seulement quelques fonctionnalités HTML5 et le chargement d'une grande script n'est pas la peine juste pour détecter la prise en charge pour ces quelques choses.

101voto

Andreas Points 6610

Vous n'avez pas besoin d'utiliser modernizr, mais vous pouvez utiliser leur méthode pour détecter si localStorage est pris en charge

moderniser à github
tester pour 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 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;
    }
});
 

mis à jour avec le code source actuel

46voto

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

18voto

juanra Points 176

Cette fonction fonctionne bien:

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

Source: www.diveintohtml5.info

15voto

Steve A Points 21

De plus, je ne souhaite pas utiliser Modernizr sine. J'utilise seulement quelques fonctionnalités HTML5 et le chargement d'un script volumineux ne vaut pas la peine de détecter la prise en charge de ces quelques éléments.

Pour réduire la taille du fichier Modernizr, personnalisez-le à l’ adresse http://modernizr.com/download/ pour répondre à vos besoins. Une version de Modernizr réservée au stockage local est proposée à 1,55 Ko.

10voto

Danilo Valente Points 6375

Essayez window.localStorage!==undefined :

 if(window.localStorage!==undefined){
    //Do something
}else{
    alert('Your browser is outdated!');
}
 

Vous pouvez également utiliser typeof window.localStorage!=="undefined" , mais la déclaration ci-dessus le fait déjà

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X