Chrome と IE の Cookie の空白文字列の扱いの違いについて

ChromeIECookie の扱いが違うことに気が付いた。

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 があるので、そちらを使用すれば、こうした落とし穴を回避できるかもしれない。