让我先说一下......我引用了这个问题/答案,它似乎包含线索,但我仍然缺少整个图片
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
相似......我还缺少什么?
答案 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');
答案 2 :(得分:1)
提供有效JavaScript标识符的帧ID会有所帮助,然后您可以使用window.top.this_iframe.frame_edit.document
等结构作为上下文。
答案 3 :(得分:0)
这些都很有帮助。当我试图通过DOM中的iframe时,我一直在轰炸。这似乎是因为我的代码驻留在ready()方法中,但iframe中调用的框架集没有被$(document).ready()触发的时间加载。
感谢您提供的所有帮助和反馈!