Захватить на экране в верхнем окне - PullRequest
0 голосов
/ 25 апреля 2011

Я пытаюсь перехватить событие onkeydown в окне, содержащем iframe, содержащий mutliple framset:

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>

Я хочу записать событие onkeydown в frame3. Я нашел относительный вопрос по stackoverflow здесь , но применен без успеха.

Должен ли я продолжать идти по этому пути, или кто-то может мне помочь.

Спасибо.

Пол

1 Ответ

0 голосов
/ 25 апреля 2011

Если вы хотите назначить прослушиватель событий в верхнем фрейме (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.

Но кадры внутри рамок внутри рамок ... Это то, что вы действительно хотите ??

...