【JavaScript/jQuery】localStorageがそもそも使用可能か判定する
状況
localStorageはブラウザ上にデータを保存するもので、保存期間の制限は無い。localStorageにデータを保存する場合に、そもそも使用可能な状態なのかを確認したい。
localStorage
localStorageの保存にはsetItem、読み込むにはgetItem、削除する場合はremoveItemを使用する。
ダミーデータで検証
どうするか。実際に使える状態ならsetItem、getItem等が動くので、ダミーを入れてみて、動いていればtrueを返してやるという感じ。falseの場合にalertを出しても良い。
const localStorageCheck = () => {
if(typeof localStorage !== 'undefined'){
try{
setLocalStorage('dummy_data', '1');
if(getLocalStorage('dummy_data') === '1'){
removeLocalStorage('dummy_data');
return true;
}else{
return false;
}
} catch(e){
return false;
}
}else{
return false;
}
};
typeof
typeof演算子は、型を返す。typeof + 対象の変数、値(operand)という風に書く。localStorageはグローバル変数。
console.log(typeof localStorage);
localStorageが使えない状況とは
ブラウザが対応してないとか、cookieを切っているとかいう場合に使えないことがある。ブラウザのバージョンや設定を確認して直してやる。chromeの場合には、設定でセキュリティとプライバシーから、cookieの設定を変更する。そもそもcookieを切っている場合、localStorage以前の問題が出ていることもある(サイト自体が閲覧不可とか)。そちらを修正する過程で、localStorageが使えない状況が改善される可能性もある。
以上
参照
・localStorage、DBに登録する場合
・Window.localStorage
・【Web Storage】localStorageが使えるかどうかの簡単な判定方法
・typeof