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の判定が取れました。