iframe是一个非常有用的标签,先不说早期用它来模型Ajax效果,现在富本文编辑器它也绝对是主角。但是它又是一个特别的元素,最早出现IE4.0中,后纷纷被其他游览器吸纳,由于IE不开源,iframe在各游览器中都有很大差异。本文针对IE9、FF、Chrome三大浏览器进行分析。
1.获得iframe对象
我们常用的获得iframe的方式一般有两种
var
obj = document.getElementById(“iframe”);
//获取对象
var
dom = window.frames[“iframe”];
//获取DOM
如果只想改变iframe的 src 或者 border ,scrolling 等attributes
,就需要用到第一种方法。
操作iframe中的DOM元素,需要注意以下两点:
- 必须先获取指定iframe的document
- 对于1,必须在页面load完以后才能获取;
4.iframe高度自适应
scrollHeight返回的是一个数字,没有带单位
在IE 下如果没有DTD声明,则按loose.dtd 解析,在设置对像的宽高时,会自动的加上单位"px"
将iframe的高度设为document.body的高度,也并不一定能成功,因为document.body的高度可能没有整个档的高度大,如使用了层
正确写法如下
.在子页面中进行设置frame的高度
var frm=window.parent.document.getElementById("frm");//获得父窗口
frm.style.height=document.body.scrollHeight + "px";//设置父窗口的高度
5.contentWindow和contentDocument
我们开始使用window.frames["name"]获得frame中的页面window对象
使用document.getElementById(id)只能获得frame对象
但是通过frame对象的contentWindow属性或contentDocument也可以获得
在这里由于frame存在跨域访问限制,所以用法不一。
chrome:iframeElement.contentDocument
firefox:iframeElement.contentDocument
ie:element.contentWindow.document
代码
var dom=document.getElementById("frm");
var value;
if(dom.conentWindow){
value=dom.conentWindow.document.getElementById("txt").value;//IE
}else{
value=dom.conentDocument.getElementById("txt").value;//FF,chrome
}
总结:在网页中,iframe的用法非常多,主要应用于伪ajax、嵌套页面、页面重用。所以在网页中具有一定的重要性,本文主要
在iframe的对象获取、窗口互访问、自适应高度等常用功能进行分析代码实现