frameが切られているHTMLドキュメントのeventオブジェクトの取得でハマッた

いまどきframeset使ってるのってどうなの?という感じですがそれは置いといて...

eventオブジェクトはwindowオブジェクトのプロパティだけど、frameを切っている場合、そしてイベントハンドラを記述する場所によっては注意が必要。

以下のようなframesetを切っているmain.htmlがあるとする、

<frameset rows="50%, 50&">
  <frame name="frameA" src="hoge.html"/>
  <frame name="frameB" src="fuga.html"/>
</frameset>

main.htmlの中で frameBで発生したイベントの event オブジェクトを参照しようとして以下のように記述してもだめだった。eventオブジェクトはnullになっていた。

  if(event.altKey) {
    // なんらかの処理
  }

以下のような記述に変更したらOKだった

  if(window.top.frameB.event.altKey) {
    // なんらかの処理
  }


これで1時間近くつぶした orz もう frameset 使いたくない。