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内で正しい処理を行ってくれます。