イベントハンドラは利くのにJavaScript が利かない!?

関数 mouseOverHoge() は定義されていません。
関数 mouseOutHoge() は定義されていません。

 onMouseOver もしくは、onMouseOut が設定されているメニュー形式のリンクをクリックしたとき、次に表示されるページが、リンク前の画面と全く同じ場所に同じメニュー形式のリンクを表示する場合、画面が切り替わる瞬間にメニュー上でマウスをぐりぐりする、つまりonMouseOver とonMouseOut を実行するような動作をすると、ほんの一瞬だがJavaScript エラーが出る。エラー内容は、onMouseOver とonMouseOut に設定されているJavaScript の関数呼び出しに失敗しているとのこと。それがいくつも出るが、表示が完全に終了すると出なくなる。

 リンクをクリックした瞬間にリンク元メニューを非表示にする設定にしたところ、エラーが少なくなったことから、あくまで推測の域を出ないが、おそらく以下のような問題。

  1. リンクをクリック
  2. リンク先、およびリンク先JavaScript の読み込み
  3. リンク元JavaScript のクリア
  4. (ページは表示されているのにJavaScript がセットされていない)
  5. リンク先ページの表示
  6. (ページは表示されているのにJavaScript がセットされていない)
  7. リンク先JavaScript のセット

 JavaScript がクリアされてからリンク先が表示されるまで、リンク先が表示されてからJavaScript がセットされるまでのごくわずかな間に、イベントハンドラは利くのにJavaScript がメモリ上にセットされていない瞬間があるらしい。

 単純に、JavaScript の読み込み自体がHTML の描画に追いついてないのなら分かるが、現象が発生したページでは、メニューリンクの表示そのものをJavaScript で行っている。なお、表示を行うJavaScript が実行される前にonMouseOver とonMouseOut の関数は読み込まれている。

 ちなみにIE では起こらないらしい。というのも、リンク先ページを表示する直前に、画面がリフレッシュされるからだ。

 なんとかしてくれ。