如何获取iframe标签中的内容

如题所述

要解释这个问题,首先要解释两个技术点。
每个“窗口”都是一个JS Runtime,即JS的运行时。如果只有一个窗口,那么就只有一个Runtime;如果一个窗口下面还有一个iframe,那么就有两个Runtime;以此类推。
Runtime
之间互操作(或者通信)是有跨域限制的。也就是说,如果这个窗口本身是a.baidu.com域名下的页面,那么如果这个页面下还有一个iframe,这
个iframe中加载的页面是b.baidu.com域名下的。那么外层的JS。就不能跟这个iframe中的内容互操作(或者通信)。

因
此外层Runtime中的JS想操作内层iframe中的内容,就必须要避免跨域限制。要么内层iframe加载页面的域名跟外层是一样的。要么就是需要
在内层iframe加载的页面中执行document.domain = 'baidu.com';从而设置跟外层的主域相同。

例如,当前页面是a.baidu.com/test.html
<html>
<head>
</head>
<body>
<iframe id="iFrm1" src="

<script>
document.domain = 'baidu.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 = 'baidu.com';
</script>
</body>
</html>

在HTML5中新增了postMessage的API。可以方便窗口跟内部iframe之间进行通信,并且可以实现跨主域通信。但是有一些限制,1.老版本的浏览器一般不支持。2.父窗口只能向iframe中发送信息,iframe只能收消息,且父窗口不能直接操作iframe中的内容。3.父窗口发送的数据也是有限制的。只能发送基本数据类型或者plain object。
温馨提示:内容为网友见解,仅供参考
无其他回答

如何获取iframe里面的元素
在iframe中获取父窗口的元素 Js代码 格式:$('#父窗口中的元素ID', parent.document).click();实例:$('#btnOk', parent.document).click();

怎么获取iframe里面的元素
说明:第一步,通过window.top.document.getElementById("topNav")方法获取了顶部菜单页面(topPage.htm)所在的iframe对象;第二步,通过上一步获取到的iframe对象的contentWindow属性得到了iframe中元素所在的window对象;第三步,通过上一步获取到的window对象来操作iframe框架中的元素,这和操作不在iframe...

js代码如何获取iframe中的元素?
获取iframe元素,JavaScript提供了一种简便方法。利用`contentWindow`属性获取iframe中的window对象,`contentDocument`属性获取iframe中的document对象。以此为基础,执行常规的DOM操作以查找iframe中的元素。不过,需注意安全限制。当iframe与主页面不在同一域名下时,出于安全考量,浏览器不允许直接通过JavaScript操...

在火狐浏览器,如何获得页面iframe中<body>标签内的全部内容。
<input type="button" onclick="aClick()" id="a" value="测试"\/> <iframe id="b" name="c" src="a.txt"> <\/body> <\/html> code]您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。

jquery获取iframe中的dom对象(两种方法)
在子窗口中操作父窗口:$(window.parent.document)接下来就可以继续获取iframe内的dom了。获取iframe内的dom对象有两种方法 1 $(window.frames["iframeChild"].document).find("#child")2 $("#child

JS对Iframe内外页面进行操作
在iframe外获取iframe里的内容方式一通过contentWindow和contentDocument这两个API:variframe=document.getElementById("iframe1");variwindow=iframe.contentWindow;varidoc=iwindow.document;varidocument=iframe.contentDocument;console.log("window",iwindow);\/\/获取iframe的window对象console.log("document",idoc...

如何使用jQuery获取iframe中的样式?
项目中使用iframe标签引入外部页面时,若需修改iframe内元素样式,需通过JavaScript进行操作,因为父页面的CSS无法影响到iframe内的样式。为此,开发者可利用iframe的onload事件来监测其加载完成状态。一旦iframe加载完毕,可利用DOM元素的contentWindow属性获取iframe的window对象,然后通过window的document属性访问iframe...

iframe没有id、class、name,父页面如何用jquery获取里面的某个元素值...
("iframe") 这个就可以取到所有的iframe元素了。接下来再判断这些iframe元素中有没有想要获取的某个元素了。有的话就对他取值就好了。

读取框架mainFrame的HTML内容
读取框架mainFrame的HTML内容方法有两种:1、通过这样即可获取iframe中的元素 document.getElementById("myFrame").contentWindow.document.getElementById('ss').innerHTML;2、利用取tag名称的方式取到数组,然后获取相应的html的内容:document.getElementsByTagName("iframe")[ 0 ].contentWindow ...

怎么获取from表单中的iframe中的内容
1,首先iframe中嵌套了一个编辑器页面(Edit\/editor.htm?id=content&ReadCookie=0)该页面中会提供可编辑的功能页面。{客户可在此编辑回复信息}。想得到其内容,这就与JS(javascript)有关了。 可以查看被链接的JS文件,具体可参照{document.getElementByID("myiframe").document.body.innerHTML} 2,...

相似回答