html5(localstrage) x javascript(jquery)でハマった

html5(localstrage) x javascript(jquery)でハマった記録。
いやー iPhoneとかandroidでも動くwebアプリ作ってて、
localstrageにjsonでデータ放り込んでアレコレする
webアプリなんやけども、簡単にできなかったので奮闘記を
紹介してみる。
多分、json x localstorage をやろうと思ったら、
こんなコードになると思うけど↓
// オブジェクトからJSONに変換してlocalstorageにドーン!
localStorage.setItem( "hoge", JSON.stringify(obj) );
// localstorage内のJSONデータをオブジェクトに変換して取得
var value = JSON.parse( localStorage.getItem("hoge") );
↑これがfirefox chromeやと動くけどAndroidで動かない。
スマホやったらlocalstorageにjson保存できないのか…
…と思ったら、そうでもない。
実機でのみ再現するからfire-bugも使われへんし。
結局、2行に1回alert出して確認してみたら、
var value = JSON.parse( localStorage.getItem("hoge") );
ここでコケてる。
バラしてみた。
var json_value = localStorage.getItem("hoge") ;
var value = JSON.parse( json_value );
すると、json.parseでコケてる。 なんでや。
ためしにtry-catch入れてみてブン投げたエラーを
alertしてみたら
「illegal access」
イ、イリガル…アク… え、なにこれ。
調べてみた結果、どうやらjson.parseにnullを投げた
ときの挙動がブラウザによって違うみたいで、
firefoxもchromeもvalueにnullが返ってきてたのに、
android端末やと、そこでエラー吐いて止まってたぽい。
ローカルストレージが空やったときの処理は入れてたけど
入れる場所がjson.parseの前やないとアカンかったみたい。
くっそう、ちょっぴりハマったぜあんちくしょう。

0 件のコメント :

コメントを投稿