Javascriptのおかしな挙動(メモ)

今日起きた不思議な現象。
以下のような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エンジンがどうかしてしまったんだろうか。
不思議でたまらない・・・

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.