1. ホーム
  2. javascript

[解決済み] localStorageが使用可能かどうか確認する

2023-01-07 06:21:03

質問

のチェックについて、多くの質問があることは承知しています。 localStorage をチェックすることについては多くの質問がありましたが、誰かがブラウザで手動でそれをオフにした場合はどうなるのでしょうか? 以下は、私がチェックに使っているコードです。

localStorage.setItem('mod', 'mod');
if (localStorage.getItem('mod') != null){
  alert ('yes');
  localStorage.removeItem('mod');
} else {
  alert ('no');
}

単純な機能で、動作します。 しかし、Chromeの設定で「データを保存しない」オプション(正確な名称は覚えていません)を選択すると、この関数を実行しようとしたときに何も表示されません。 Uncaught Error: SecurityError: DOM Exception 18 . ということは、その人が完全にオフにしているかどうかを確認する方法はあるのでしょうか?

UPDATE: これは私が試した2番目の機能ですが、まだ反応(アラート)がありません。

try {
  localStorage.setItem('name', 'Hello World!');
} catch (e) {
  if (e == QUOTA_EXCEEDED_ERR) {
   alert('Quota exceeded!');
  }
}

どのように解決するのですか?

使用方法 modernizr のアプローチ(私の関数名をもっと良いものに変えたほうがいいかもしれません)を使ってください。

function lsTest(){
    var test = 'test';
    try {
        localStorage.setItem(test, test);
        localStorage.removeItem(test);
        return true;
    } catch(e) {
        return false;
    }
}

if(lsTest() === true){
    // available
}else{
    // unavailable
}

他の方法ほど簡潔ではありませんが、これは互換性を最大化するために設計されているからです。

元のソースは https://github.com/Modernizr/Modernizr/blob/master/feature-detects/storage/localstorage.js

動作例です。 http://jsfiddle.net/6sm54/2/