localStrageの より正確な対応チェック
localStrageの正確な対応チェック
localStraeの対応はIEでは、8からとなっています。IE7以前ではlocaStrageは非対応ということになり、対応か、非対応かで処理を分ける必要があります。
さらに、バージョンがIE8でもデフォルトでインターネットオプションに『DOMストレージ』が有効になっていないと動作します。
つまりlocalStrageの対応チェックは
・DOMストレージが有効になっているか
・そもそもブラウザがlocalStrageか
・そもそもブラウザがlocalStrageか
この2つをチェックしてあげる必要があります。
そんなわけでかあさんは以下のスクリプトを実行しました。
localStrage対応チェックのサンプルコード
//Javascriptエラーを非表示 function TigilError() { return true; } window.onerror = TigilError; $(function(){ //localStrageの対応チェック if(('localStorage' in window) && window['localStorage'] !== null){ //localStrage対応なら、テストでストレージをセット localStorage.setItem('test', 'test'); //テストでセットしたlocalStorageを変数として定義 var test = localStorage.getItem('test'); } //Javascript版issetはたったこれだけ //対応ならid→hogeに対してテキスと追加 if(test){ $("#hoge").append('対応'); }else{ $("#hoge").append('非対応'); }
解説
一説にはif(localStorage){}だけでもよいのですが、IE7ではlocalStorageと書いた時点で未対応ですからエラーがが返ってしまいますね。
そこで完全未対応ブラウザのためにあらかじめエラーを非表示にし、
対応ならばlocalStrageにtestをセットし、後は変数化したtestがセットされているか、されていないかで判定を行います。
IE8、9、では対応と表示され、IE7 では非対応となりました。
なお、インターネットオプションのDOMストレージのチェックが入っていない場合は『非対応』の表示が確認でき、より正確にlocalStorageの判定が取れました。