0

我尝试在包含多个框架集的 iframe 的窗口中捕获 onkeydown 事件:

顶部.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>

框架1.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>

框架2.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 回答