问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何获取iframe里面的数据

发布网友 发布时间:2022-04-23 13:18

我来回答

1个回答

热心网友 时间:2022-05-12 05:09

要解释这个问题,首先要解释两个技术点。
每个“窗口”都是一个JS
Runtime,即JS的运行时。如果只有一个窗口,那么就只有一个Runtime;如果一个窗口下面还有一个iframe,那么就有两个Runtime;以此类推。
Runtime之间互操作(或者通信)是有跨域*的。也就是说,如果这个窗口本身是a.baidu.com域名下的页面,那么如果这个页面下还有一个iframe,这个iframe中加载的页面是b.baidu.com域名下的。那么外层的JS。就不能跟这个iframe中的内容互操作(或者通信)。
因此外层Runtime中的JS想操作内层iframe中的内容,就必须要避免跨域*。要么内层iframe加载页面的域名跟外层是一样的。要么就是需要在内层iframe加载的页面中执行document.domain
=
'.com';从而设置跟外层的主域相同。
例如,当前页面是a.baidu.com/test.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<head>
</head>
<body>
<iframe
id="iFrm1"
src="
<script>
document.domain
=
'.com';
var
ifrm1
=
document.getElementById('iFrm1');
ifrm1.onload
=
function(){
alert(ifrm1.contentWindow.document.getElementById('innerDiv').innerHTML);//弹出恭喜你操作到内部iframe中的元素了!!!
};
</script>
</body>
</html>
iframe中加载的页面内容如下:
1
2
3
4
5
6
7
8
9
10
<html>
<head>
</head>
<body>
<div
id="innerDiv">恭喜你操作到内部iframe中的元素了!!!</div>
<script>
document.domain
=
'.com';
</script>
</body>
</html>
在HTML5中新增了postMessage的API。可以方便窗口跟内部iframe之间进行通信,并且可以实现跨主域通信。但是有一些*,1.老版本的浏览器一般不支持。2.父窗口只能向iframe中发送信息,iframe只能收消息,且父窗口不能直接操作iframe中的内容。3.父窗口发送的数据也是有*的。只能发送基本数据类型或者plain
object。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
炒股怎么买进卖出? 办一个餐饮的营业执照要多少钱 上海贷款平台有哪些 上海有什么网贷 Intel 赛扬D325 2.53G与多大频率的内存匹配 Intel 赛扬D 352(散)重要参数 CPU Intel 赛扬D 326 这个东西怎么看的? Intel 赛扬D 326(散)重要参数 Intel 赛扬D 325(盒)重要参数 Intel 赛扬D 325(盒)Intel 赛扬D 325(盒)详细参数 宋仁宗擅长的飞白书是什么?为什么后世很少提及? 一个iframe中嵌一个iframe之间如何通信 飞白的引证解释 飞白句。双关句 飞白的引申 书法中所说的“飞白”是什么意思? 书法中所说的&quot;飞白&quot;是什么意思? 请问写毛笔字怎样才有飞白的效果 中国画、书法中的“飞白”是中国传统艺术中( )典型表现? 谐音双关和飞白的区别 中国画,书法中的飞白是中国传统艺术中什么的典型表现? 飞白书的飞白书”的兴衰及走向 我的世界无限夜视怎么弄 我的世界全版本无限夜视教程 请问书法中的“飞白书”是何人创造的? 我的世界1.8.1怎么整无限夜视 中国画中的飞白是什么表现 我的世界1.6.4怎么调无限夜视?在哪里调? 飞白体的书法赏析 我的世界中国版怎么修改无限夜视效果 无限夜视 中国画、书法中的“飞白”之说,它究竟是什么的典型表现? 飞白书的晏殊 两个iframe之间怎么传值 同一freamset中两个fream页面间怎样相互通信?其中一个fream页面需对另一个fream页面的DOM内容进行操作? “飞白”是白色的书体吗? 一个页面上面很多iframe会有什么影响? 管理系统一般都是使用iframe吗,用它的优势和劣势在那里 重装系统显示:“获取硬盘信息失败,请谨慎操作”是什么意思? 如何获取iframe标签中的内容 获取磁盘文件系统和设备? layer的iframe层模式怎么实现子父通讯 c++获取本地磁盘 用iframe嵌套一个网站,如何获取这个网站请求的数据并打印到控制台。_百... 批处理如何获取本机磁盘 如何在父页面上调用iframe子页面的js方法 C语言 获取磁盘可用空间 iframe框架是如何传值 获取硬盘分区失败,可能缺少硬盘驱动是怎么回事? Google和百度哪个能抓取Iframe里的内容 弹出层遇到iframe怎么办 VB6中如何获取磁盘信息?