6

让我以此作为序言......我已经引用了这个问题/答案,它似乎包含线索,但我仍然错过了整个画面

在另一个框架的上下文中运行 JQuery

本质上,索引页的结构是这样的

<html>
<body>
  <div class="frames-wrap">
      <iframe id="this-iframe" src="location.php">

      </iframe>
  </div>
</body>
</html>

location.php 然后包含一个框架集(咳咳,不是我的想法......),它有两个框架,像这样设置......

<frameset cols="350,*">
  <frame src="search.php" id="frame_search" name="search"/>
  <frame src="edit.php" id="frame_edit" name="edit" />
</frameset>  

如果我想在索引页面和这些元素之间操作对象,我会怎么做?

我一直认为上下文应该类似于window.parent.frames[0].document......我还缺少什么?

4

4 回答 4

4

我认为 technicolorenvy 的链接有答案,但选择器有一个鲜为人知的第二个参数,您可以在其中设置上下文。

像这样的东西:

var iframeDoc = document.getElementById('myIframe');
iframeDoc = (iframeDoc.contentWindow) ? iframeDoc.contentWindow : (iframeDoc.contentDocument.document) ? iframeDoc.contentDocument.document : iframeDoc.contentDocument;


// From the parent window
$('p', iframeDoc).html('Hello from parent');

http://docs.jquery.com/Core/jQuery#expressioncontext

于 2010-01-27T21:30:50.477 回答
4

前言:除非来自同一个域,否则您将无法访问 iframe 内容。

要在 iframe 中选择元素,您可以使用这样的 jQuery 调用

element = $("#this_iframe").contents().find("#frame_search")

关键是使用contents()功能。见遍历/内容

于 2010-01-28T10:33:26.933 回答
1

提供作为有效 JavaScript 标识符的帧 id 会有所帮助,然后您可以使用诸如window.top.this_iframe.frame_edit.document上下文之类的构造。

于 2010-01-27T22:15:58.047 回答
0

这些都很有帮助。当我试图通过 DOM 中的 iframe 时,我一直在轰炸。这似乎是因为我有代码驻留在 ready() 方法中,但是在 iframe 中调用的框架集在 $(document).ready() 触发时尚未加载。

感谢所有伟大的帮助和反馈!

于 2010-01-28T18:42:39.413 回答