0

複数のフレームセットを含むiframeを含むウィンドウでonkeydownイベントをキャプチャしようとしています:

top.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
  <title> top.html </title>
</head>
<body>
  <iframe frameborder="0" border="0" width="100%" height="100%" src="framset1.html" id="framset1"></iframe>
</body>

framset1.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A frameset document</TITLE>
</HEAD>
  <FRAMESET rows="66,*" border="0">
      <FRAME scrolling="no" id="frame1" name="frame1" src="frame1.html">
      <FRAME id="framset2" name="framset2" src="framset2.html">
  </FRAMESET>
</HTML>

framset2.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A frameset document</TITLE>
</HEAD>
  <FRAMESET cols="46,*" border="0">
      <FRAME scrolling="no" id="frame2" name="frame2" src="frame2.html">
      <FRAME id="frame3" name="frame3" src="frame3.html">
  </FRAMESET>
</HTML>

frame3でイベントonkeydownをキャプチャしたい。私はここでstackoverflowに関する相対的な質問を見つけましたが、成功せずに適用されました。

私はこの方法を続ける必要がありますか、それとも誰かが私を助けることができますか?

ありがとう。

ポール

4

1 に答える 1

0

トップフレームにイベントリスナーを割り当てる場合(top.html):

document.getElementById('framset1').contentDocument.getElementById('framset2').contentDocumentcontentDocument.getElementById('framset3').contentDocument.addEventListener('keydown', function(e) {
  alert('keydown in frame 700');
}, false);

これは、すべてのフレームが同じドメイン+ポート上にある場合にのみ機能します。そうしないと、にアクセスしようとするとセキュリティ例外が発生しますdocument.getElementById('framset1').contentDocument

しかし、フレーム内のフレーム内のフレーム...それはあなたが本当に欲しいものですか?

于 2011-04-25T00:25:16.133 に答える