IEでonbeforeunloadを使ったときの挙動

IEでonbeforeunloadをつかうと他のブラウザと異なる挙動となります。 これはIEだけhref=”javascript:~”となっているaタグをクリックした際にもonbeforeunloadが実行されてしまうためです。 これの対処方はいくつかありますが、href=”javascript:~”のままで対応するには二つ方法があります。

一つ目がhref=”javascript:~”となっているaタグのonclickにreturn falseを記載することです。

<a href="javascript:void(0)" onclick="aipo.timeline.showCommentField();return false">コメント</a>

二つ目がフラグを用意して、onbeforeunload内でフラグを使って処理を分岐させる方法です。

var ignore =false;
 window.onbeforeunload =function(event){
   if(!ignore){
      event = event || window.event;
  return  event.returnValue =”確認”
} else{
ignore =false;
}
}


onclickメソッド内でignoreをtrueにすればwindow.onbeforeunload内で正しい処理を行ってくれます。