- 2011-12-28 (水) 15:37
- Javascript
LocalStorage や SessionStorageが使えるかどうか確認する時の条件について。
未サポート機種であればwindowにlocalStorageやsessionStorageというプロパティがないので
if(window.localStorage)みたいな条件だけでもチェック出来る。
しかしWebViewでも表示する場合、ネイティブ側で使用許可をしていないと
「サポートはしているんだけど使えない」という状況になってsetItem等を使った場合にQUOTA_EXCEEDED_ERRとなる。
WebViewで許可されていない場合はnullを返すので、その条件も含めつつ
setItemで適当な文字列を書きこんでgetItemした時に同じ文字列だったら
ストレージが使えると判断するのが確実みたいでした。
JavaScript:
-
var hasLocalStorage = (function(){
-
if(('localStorage' in window) && window['localStorage'] !== null){
-
try {
-
localStorage.setItem('test', 'test');
-
var c = localStorage.getItem('test');
-
localStorage.removeItem('test');
-
return (c === 'test');
-
} catch(e) {
-
return false;
-
}
-
}else{
-
return false;
-
}
-
})();
書きこみの前に都度チェックを入れる場合は、setItemの前にremoveItemを挟んでおくと
連続書きこみのエラーが回避出来ます
関連記事
- Older: [js,css] テンキーがついているスマートフォンの罠