关于iframe的内外访问的问题

当iframe加载的页面使用#document时,外部无法直接选择内部元素。可以通过iframe[num].contentWindow.document找到内部元素。而在#document内部,通常用window.parent或window.top访问外部,但在#document下可能返回undefined。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题描述

当设计一个程序,前端的页面结构有多个iframe,且iframe内部是用的‘#document’来加载内部的页面时,关于iframe的内外部访问就会由于这个‘#document’而出现问题:
①在iframe外部无法选择到#document内部的元素;
②在#document内部无法选择到iframe外部(因为#document隔开了)。

二、解决办法

1.在iframe外部选择#document内部的元素:

如结构这样的文件( 为#document内部的元素):

<iframe>
	#document
		<html>
		</html>
</iframe>
<iframe>
	#document
		<html>
		</html>
</iframe>
<iframe>
	#document
		<html>
		</html>
</iframe>

假设当前选择器top为iframe外部的某元素,可以使用:

top.getListiframe()[num].contentWindow.document.find('html');

此时这个选择器选中的就是某个#document内部的html.

2.在#document内部选择到iframe外部(待解决)

如果是已经在#document内部的中时,此时是iframe内部,这个时候可以像众多解决方案中所述的:

在 iframe 内部使用 window.parent 来访问包含它的父级窗口;
使用 window.top 来访问整个窗口层次结构的最顶层窗口。

这样是可以解决问题的,但当外面包了一个#document后,结构成为这样:

<iframe>
	#document
		<html>
			<div>
			</div>
		</html>
</iframe>

这个时候在HTML中使用这个window.parent就没办法了(会返回undefined)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值