Domanda Come rilevare se il browser supporta l'archiviazione locale HTML5


Il seguente codice avvisa ls exist in IE7:

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

IE7 in realtà non supporta l'archiviazione locale, ma questo lo avverte ancora. Forse perché sto usando IE9 nel browser IE7 e nelle modalità documento usando lo strumento di sviluppo IE9. O forse questo è solo il modo sbagliato per verificare se LS è supportato. Qual è la strada giusta?

Inoltre non voglio usare Modernizr poiché sto usando solo alcune funzionalità HTML5 e il caricamento di uno script di grandi dimensioni non vale la pena solo per rilevare il supporto per quelle poche cose.


75
2018-06-26 19:14


origine


risposte:


Non è necessario utilizzare modernizr, ma è possibile utilizzare il loro metodo per rilevare se localStorage è supportato

modernizr a github
prova per 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;
    }
});

aggiornato con il codice sorgente corrente


86
2018-06-26 19:18



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

35
2018-06-26 19:15



Inoltre non voglio usare Modernizr poiché sto usando solo alcuni HTML5   funzionalità e il caricamento di uno script di grandi dimensioni non vale la pena solo per rilevare   supporto per quelle poche cose.

Per ridurre le dimensioni del file Modernizr, personalizzare il file in http://modernizr.com/download/ per soddisfare le tue esigenze. Una versione locale di Modernizr è disponibile a 1.55KB.


15
2018-04-01 14:16



Questa funzione funziona bene:

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

Fonte: www.diveintohtml5.info


13
2017-08-15 10:02



Provare window.localStorage!==undefined:

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

Puoi anche usare typeof window.localStorage!=="undefined", ma la dichiarazione di cui sopra già lo fa


8
2018-06-26 19:15



Non l'ho visto nelle risposte, ma penso che sia bello sapere che puoi facilmente usare vanilla JS o jQuery per test così semplici, e mentre Modernizr aiuta molto, ci sono soluzioni pulite senza di essa.

Se usi jQuery, tu puoi fare:

var _supportsLocalStorage = !!window.localStorage
    && $.isFunction(localStorage.getItem)
    && $.isFunction(localStorage.setItem)
    && $.isFunction(localStorage.removeItem);

O, con pura Vaniglia JavaScript:

var _supportsLocalStorage = !!window.localStorage
    && typeof localStorage.getItem === 'function'
    && typeof localStorage.setItem === 'function'
    && typeof localStorage.removeItem === 'function';

Quindi, dovresti semplicemente fare un IF per testare il supporto:

if (_supportsLocalStorage) {
    console.log('ls is supported');
    alert('ls is supported');
}

Quindi l'idea generale è che ogni volta che hai bisogno di funzioni JavaScript, devi prima testare l'oggetto genitore e poi i metodi che il tuo codice usa.


6
2017-07-26 20:52



Prova a prendere farà il lavoro:

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

3
2017-08-10 09:02



Provare:

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

1
2018-06-26 19:16