モダンブラウザとCookieの保存文字列が異なるIE8とIE9

IE8とIE9で(この2つのブラウザでしか確認していないのだけど)他のモダンブラウザ(ChromeとFirefoxでしか確認していない)と Cookieを保存するときの文字列が異なっていたことがわかったのでメモ。

保存する文字列が異なる、というのはcookie-nameを指定してcookie-valueに何も指定しなかった場合の文字列が異なる。

IE8 / IE9

document.cookie = 'name=';
document.cookie;
// => 'name;'

Chrome / Firefox

document.cookie = 'name=';
document.cookie;
// => 'name=;'

IEではcookie-valueが空だと=が付加されない。 =があるものとしてsplitして、cookie-valueが入っているであろう配列の位置にアクセスするとundefinedになる。

document.cookie = 'name=""';
document.cookie;
// => 'name=""';

というふうに""で囲むとIEでもモダンブラウザと同じ文字列で保存されたので常に""で囲うと良いのかもしれない。

値を取り出すのが若干面倒にはなるが。