background image

js 中 iframe 的操作

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 所包含的页面(不是 iframe 本身)。就需要使用第二种方法,因为

它取得的是一个完整的

DOM 模型,比如想得到 iframe 的 document.body 的内容

操作

iframe 中的 DOM 元素,需要注意以下两点:

1)必须先获取指定 iframe 的 document

2)对于 1,必须在页面 load 完以后才能获取;

但是请注意:

chrome 浏览器只能使用在 HTTP 协议中,在本地 js 文件不支持 Iframe 包

含页面的访问。

  改变 iframe 本身的属性
  document.getElementById(“iframe”).src="a.html";
  document.getElementById(“iframe”).frameborder="200";
 
2.在父窗体中访问子窗体对象
var value=window.frames[“frm”].document.getElementById("txt").value;
window.frames[“frm”]是获得子窗口的 window 对象
 
3.在子窗口访问父窗口对象
var value=window.parent.document.getElementById("txt").value;
其中:

window.parent 是获得父窗口的 window 对象。

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 对象