Chrome と IE の Cookie の空白文字列の扱いの違いについて
Chrome と IE で Cookie の扱いが違うことに気が付いた。
jQuery で以下のようにテキストフィールドの内容を Cookie に保存する場合:
<input type="text" id="foo"> <script> document.cookie = "foo=" + $("#foo").val(); </script>
テキストフィールドに何も入力されていない場合空白文字が保存される。ここまでは問題ない。
このような値が空白文字である Cookie を document.cookie で参照すると、Chrome なら "foo=" という文字列となり、IE なら "foo" という文字列になる。複数ある場合、Chrome なら "foo=; bar=" となり、IE なら "foo; bar" となる。要するに IE は値が空白文字列の場合 "=" が付与されないのだ。
使ったことはないけど、jQuery のプラグインに jquery-cookie があるので、そちらを使用すれば、こうした落とし穴を回避できるかもしれない。