調べた感じだと、Chromeでのみ起こるらしい。
現象
JavaScriptを呼び出しているHTMLの1行目に対して、以下のエラーが出る。Uncaught SyntaxError: Unexpected end of input大変切り分けづらかったが、JSON.parse()をコメントアウトするとこのエラーが消えることに気づいた。
どうやらJSON.parse()が悪いらしい。
なお、JSON.parse()の呼び出しの形はこんな感じ。
// Read LocalStorage on ChromeExtension.という訳で、対策を探した。
var value = JSON.parse( localStorage["hoge"] )
対策
JSON.parseとエラー文で検索して、以下のStackOverflowを見つけた。- javascript - JSON.parse fails in Google Chrome - Stack Overflow
http://stackoverflow.com/questions/9158665/json-parse-fails-in-google-chrome
コレによると、
var value = JSON.parse( hoge || "null" )とすると良いのだそうだ。
原因
ChromeのJSON.parseは、空文字が入るとおかしなことになるらしい。JSでは空文字列はfalse性を持つので、上記の対策で通るという事。
そのエラー発生は良いとしても、JSON.parse()のエラーでなくてEnd of Inputなんてわかりづらいエラー、それもHTMLの1行目なんかに出るのが悲しい。
カッコが間違ってないか、かなり探してしまったよ・・・
0 件のコメント:
コメントを投稿