iframe中框架的jQuery / javascript上下文是什么?

时间:2010-01-27 21:21:22

标签: javascript jquery iframe frameset

让我先说一下......我引用了这个问题/答案,它似乎包含线索,但我仍然缺少整个图片

Run JQuery in the context of another frame

基本上,索引页面的结构是这个

<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 个答案:

答案 0 :(得分:4)

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

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

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

关键是使用contents()功能。见Traversing/contents

答案 1 :(得分:3)

我认为来自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

答案 2 :(得分:1)

提供有效JavaScript标识符的帧ID会有所帮助,然后您可以使用window.top.this_iframe.frame_edit.document等结构作为上下文。

答案 3 :(得分:0)

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

感谢您提供的所有帮助和反馈!