在顶部窗口捕获onkeydown

时间:2011-04-24 22:30:55

标签: javascript events iframe frameset onkeydown

我尝试在包含一个包含多个framset的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 here上找到了一个相对的问题,但是没有成功应用。

我必须继续这样做,否则任何人都可以帮助我。

感谢。

1 个答案:

答案 0 :(得分: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时收到安全性异常。

但帧内帧内的帧......这就是你真正想要的吗?