今日起きた不思議な現象。
以下のようなJavascriptを書いて動かしていました。
function clear_cokkie(code){ var cokkiecode = Base64.decode($.cookie('hogehoge').split('|')[0]); console.log('code=' + code + ', cookiecode=' + cookiecode + '*' ); console.log(code + 1); console.log(cookiecode + 1); if(code != cokkiecode) { document.location.href = '/'; } }
※ 「*」は末尾に余計な空白が入っていないことの確認、「+1」は文字列として認識されていることの確認。
やりたいこと
- 現在のコードをcookieに格納されたコードを比較して異なっていれば画面をリロードする
(サーバーサイドで現在のコードに対する必要な処理が行われ、cookieにコードが格納される) - cookieにはbase64でエンコードした状態で値が入っている
- 一つのcookieキーで複数のパラメーターが|区切りで入っている
期待していたコンソール出力
// 1回目 code=12345, cookiecode=56789* 123451 567891 // 2回目 code=12345, cookiecode=12345* 123451 123451
自分の環境でおこった動作
// 1回目 code=12345, cookiecode=56789 123451 56789 // 2回目 code=12345, cookiecode=12345 123451 12345 // 3回目以降無限リフレッシュ
変数cookiecodeの値が内部でうまく処理されていないようなおかしな動き。
他のマシンのIEや自分の別ブラウザでは問題なく動作していました。
自分の環境は
- Windows7 64bit
- IE9(64bit版 32bit版 両方)
IEの中のJavascriptエンジンがどうかしてしまったんだろうか。
不思議でたまらない・・・