Pertanyaan Cara mendeteksi apakah browser mendukung Penyimpanan Lokal HTML5


Peringatan kode berikut ls exist di IE7:

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

IE7 tidak benar-benar mendukung penyimpanan lokal tetapi ini masih mengingatkannya. Mungkin ini karena saya menggunakan IE9 di browser IE7 dan mode dokumen menggunakan alat pengembang IE9. Atau mungkin ini adalah cara yang salah untuk menguji apakah LS didukung. Apa cara yang benar?

Juga saya tidak ingin menggunakan Modernizr karena saya hanya menggunakan beberapa fitur HTML5 dan memuat skrip besar tidak layak hanya untuk mendeteksi dukungan untuk beberapa hal tersebut.


75
2018-06-26 19:14


asal


Jawaban:


Anda tidak harus menggunakan modernizr, tetapi Anda dapat menggunakan metode mereka untuk mendeteksi jika localStorage didukung

modernizr di github
tes untuk 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;
    }
});

diperbarui dengan kode sumber saat ini


87
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



Juga saya tidak ingin menggunakan Modernizr karena saya hanya menggunakan beberapa HTML5   fitur dan memuat skrip besar tidak layak hanya untuk dideteksi   mendukung beberapa hal itu.

Untuk mengurangi ukuran file Modernizr sesuaikan file di http://modernizr.com/download/ agar sesuai dengan kebutuhan Anda. Sebuah versi Modernizr yang berasal dari penyimpanan lokal hadir di 1.55KB.


15
2018-04-01 14:16



Fungsi ini berfungsi dengan baik:

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

Sumber: www.diveintohtml5.info


13
2017-08-15 10:02



Mencoba window.localStorage!==undefined:

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

Anda juga bisa menggunakan typeof window.localStorage!=="undefined", tetapi pernyataan di atas sudah melakukannya


8
2018-06-26 19:15



Saya tidak melihatnya dalam jawaban, tapi saya pikir itu baik untuk mengetahui bahwa Anda dapat dengan mudah menggunakan vanilla JS atau jQuery untuk tes sederhana seperti itu, dan sementara Modernizr banyak membantu, ada solusi bersih tanpanya.

Jika Anda menggunakan jQuery, Anda dapat melakukan:

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

Atau, dengan Vanilla murni JavaScript:

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

Kemudian, Anda cukup melakukan IF untuk menguji dukungan:

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

Jadi, seluruh ide adalah bahwa setiap kali Anda perlu fitur JavaScript, Anda akan terlebih dahulu menguji objek induk dan kemudian metode yang digunakan kode Anda.


6
2017-07-26 20:52



Coba tangkap akan melakukan pekerjaan:

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

3
2017-08-10 09:02



Mencoba:

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

1
2018-06-26 19:16



if (window.localStorage){

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

}

1
2017-08-13 08:44