问答文章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-04-20 04:11

要解释这个问题,首先要解释两个技术点。
每个“窗口”都是一个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
<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中加载的页面内容如下:
<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
梦见穿堂风 没有爱情我们一样会快乐的对吗 没有爱情的人会快乐么? 解除合同的效力有什么 合同解除会产生什么法律效力 合同解除后,哪些条款仍具效力? 合同解除产生哪些效力呢 民法典中合同解除产生哪些效力 解除合同的效力有哪些 济南七中学校怎么样 重装系统显示:“获取硬盘信息失败,请谨慎操作”是什么意思? 管理系统一般都是使用iframe吗,用它的优势和劣势在那里 一个页面上面很多iframe会有什么影响? “飞白”是白色的书体吗? 同一freamset中两个fream页面间怎样相互通信?其中一个fream页面需对另一个fream页面的DOM内容进行操作? 两个iframe之间怎么传值 飞白书的晏殊 如何获取iframe里面的数据 宋仁宗擅长的飞白书是什么?为什么后世很少提及? 一个iframe中嵌一个iframe之间如何通信 飞白的引证解释 飞白句。双关句 飞白的引申 书法中所说的“飞白”是什么意思? 书法中所说的&quot;飞白&quot;是什么意思? 请问写毛笔字怎样才有飞白的效果 中国画、书法中的“飞白”是中国传统艺术中( )典型表现? 谐音双关和飞白的区别 中国画,书法中的飞白是中国传统艺术中什么的典型表现? 飞白书的飞白书”的兴衰及走向 获取磁盘文件系统和设备? layer的iframe层模式怎么实现子父通讯 c++获取本地磁盘 用iframe嵌套一个网站,如何获取这个网站请求的数据并打印到控制台。_百... 批处理如何获取本机磁盘 如何在父页面上调用iframe子页面的js方法 C语言 获取磁盘可用空间 iframe框架是如何传值 获取硬盘分区失败,可能缺少硬盘驱动是怎么回事? Google和百度哪个能抓取Iframe里的内容 弹出层遇到iframe怎么办 VB6中如何获取磁盘信息? jQuery如何在两个窗口间互谅通信? 获取硬盘分区失败,可能缺少硬盘驱动 javascript怎么获取iframe中的地址 vc++如何获取磁盘信息? JavaScript 怎么跨域获取 iframe 中的内容 为什么会获取硬盘信息失败的? HttpClient怎么获取到iframe中的内容 如何用C#获取磁盘名称?