アンカーリンクとMac版IE

Mac版IEには、アンカーを使ったページ内リンクでもonloadイベントが発生させるため、場合によっては無限リロードの罠にかかります。



ここが(Mac版IE以外のブラウザの)ジャンプ先一行目です。Mac版IEでは、ここにジャンプする際にもonloadイベントが発生してしまうため、再び、#jumpにとぼとうして、永遠にリロードし続けます。

このページのヘッダー部分を抜粋しますと、
のようになっています。Mac版IE以外のブラウザでは、「hash.htmlにアクセス→onloadイベントが発生。jumpT()関数が実行される(1回目)→hash.html#jumpにジャンプ」となりますが、Mac版IEでは、「hash.htmlにアクセス→onloadイベントが発生。jumpT()関数が実行される→hash.html#jumpにジャンプ(1回目)→onloadイベントが発生。jumpT()関数が実行される(2回目)→hash.html#jump2にジャンプ→onloadイベントが発生。jumpT()関数が実行される(3回目)→『alert("Mac版IEですね");』が実行される。」となります。

Apple Store(Japan)

(ここがMac版IEのジャンプ先です。)もし、「location.hash」のチェックをせずに、単純に「location.href="#jump";」としていたら、Mac版IEでは、「hash.htmlにアクセス→onloadイベントが発生。jumpT()関数が実行される(1回目)→hash.html#jumpにジャンプ→onloadイベントが発生。jumpT()関数が実行される(2回目)→hash.html#jumpにジャンプ→onloadイベントが発生。jumpT()関数が実行される(3回目)→hash.html#jumpにジャンプ→onloadイベントが発生。jumpT()関数が実行される(4回目)hash.html#jumpにジャンプ→onloadイベントが発生。jumpT()関数が実行される(5回目)・・・」と永遠に続きます。無限ループになります。

Safariの古いバージョンでも同じような現象があるという情報を海外のサイトで見かけたことがありますが、まだテストしていません。