从 iframe 访问和更改父页面(使用 jquery)

Posted

技术标签:

【中文标题】从 iframe 访问和更改父页面(使用 jquery)【英文标题】:access and change parent page from iframe (with jquery) 【发布时间】:2012-05-31 16:24:58 【问题描述】:

有什么方法可以从 iframe 访问父页面(并更改父页面)?

<body>
   <iframe src="frame1.html" name="frame1" ></iframe>
   <div id="test1"></div>
</body>

在 frame1.html 中是 &lt;a href=..&gt;,我想在单击 &lt;a href..&gt; 时将文本“&lt;h1&gt;clicked&lt;/h1&gt;”添加到 &lt;div id="test1"&gt;&lt;/div&gt;

谢谢。

【问题讨论】:

出于许多安全原因,这是不可能的。 @ChristianVarga 不完全正确:允许跨位于同一域中的元素。 【参考方案1】:

如果您的子页面(frame1.html)与父页面位于同一域,您可以在子窗口中编写如下代码:

 $('#test1', parent.document).html('<h1>clicked</h1>');

第二个参数提供context,在其中搜索与第一个参数匹配的元素。文档在这里:http://api.jquery.com/jQuery/#jQuery-selector-context

 jQuery( selector [, context ] )

所以,您的代码 (frame1.html) 可能是这样的:

 <a href="..." 
  onclick="$('#test1', parent.document).html('<h1>clicked</h1>');">click me</a>

希望这会有所帮助。

【讨论】:

【参考方案2】:

重要提示:只有在父 iframe 和 iframe 都来自同一个域的情况下,才能访问输入和输出 iframe,否则由于同源策略,您无法访问>.

请注意,这两个部分都有自己的文档。从 iframe 访问父对象很简单

parent.document

并且从父级是以下之一:

window.frames['iframeName']

(window.frames.length /*gives you the number of iframes in your document*/ )

或使用 id 引用它并执行以下操作(注意支持!)

var iframe = document.getElementById('iframe');
var doc = iframe.contentDocument? iframe.contentDocument:iframe.contentWindow.document;

【讨论】:

【参考方案3】:

下面的代码应该可以正常工作:

$(parent.document).find("#selector");

选择器是从父文档中执行一些动作的。例如:

$(parent.document).find("#selector").remove();

【讨论】:

以上是关于从 iframe 访问和更改父页面(使用 jquery)的主要内容,如果未能解决你的问题,请参考以下文章

无法从 iframe 访问父文档

使用 ajaxSend 在 iframe 中捕获来自父页面的请求

如何使用 jquery 访问 iFrame 父页面?

子iframe 怎么访问 父的 iframe方法

子窗口访问父页面iframe中的iframe,top打开的子窗口访问父页面中的iframe中的iframe

如何使用 jquery 从 IFrame 本身更改 IFrame 样式?