1.21 jigowatts

Great Scott!

IE8とIE11で空文字Cookieの戻り値が違う

事象

Internet Exploerer(以下IE) 8用のイントラサイトが規定のブラウザがIE11になったことで表示が乱れたとユーザより連絡を受けたので、さっそく原因を調査してみました。

原因

JavaScriptで値が空文字のcookieを取得したときのブラウザ間の違い | かたつむりくんのWWW

Cookieの空文字の扱いが違うだと?!なにそれハゲる。

IE8では値が空文字のCookieはundefined、IE11では空文字は空文字となる違いがあり、Cookieの値が空文字だった場合以下のようなJavaScriptのコードの動きが違ってしまい大爆死。

if (cookie != null) { //とある処理 }

あ、ちなみにこのコードはわたし^o^が書きました。

つまり、こうなるってわけですね。

undefined != null
// => false
"" != null
// => true

イントラサイトは規定のブラウザで動けばオッケーイで楽なんだけど、ブラウザ間の差異に気付きにくいのは弊害だなぁ。