JavaScript对iframe的DOM操作
2011-10-26 00:00
579 查看
在IE6、IE7中,我们可以使用 document.frames[ID].document 来访问iframe子窗口中的document对象,可是这是不符合W3C标准的写法,也是IE下独有的方法,在Firefox下却不可以使用,Firefox下使用的是符合W3C标准的 document.getElementById(ID).contentDocument 方法,今天我在写实例的时候,通过IE8进行测试,IE8也是使用的符合W3C标准的 document.getElementById(ID).contentDocument 方法。所以我们可以写一个在IE和Firefox下通用的获取iframe document对象的函数—getIFrameDOM:
如果我们要获取iframe的window对象,而不是document对象,可以使用document.getElementById(ID).contentWindow的方法。这样我们就可以使用子窗口中的window对象了,比如子窗口中的函数。
在子窗口中,我们可以通过parent就可以获得父窗口的window对象,如果假如我们在父窗口有一个函数为getIFrameDOM,我们可以通过parent.getIFrameDOM来调用,同理我们使用parent.document就可以在子窗口中访问父窗口的document对象了。
相关的还有一个contentDocument属性,这个属性是指指定的frame或者iframe所在的document对象,但是悲剧的是,ie6-ie7并不支持这个属性。
ie6和ie7还可以使用document.frames["iframe Name"]或者document.frames["iframe ID"]来获取相当于contentWindow属性,而firefox和chrome并不支持这些document.frames["iframe Name"]或者document.frames["iframe ID"],但是window.frames["iframe Name"]或window.frames[index](index是索引值)也支持所有主流浏览器。
我们知道document对象是window对象的一个子对象,所以我们可以通过document.getElementById("iframe ID").contentWindow.document来获取iframe的document对象,相当于contentDocument属性。
parent是父窗口(如果窗口是顶级窗口,那么parent==self==top)。
top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe)。
self是当前窗口(等价window)。
opener是用open方法打开当前窗口的那个窗口。
这样iframe里的js要操作父级窗口的dom可以通过parent,top这些对象来获取父窗口的window对象,例如:
parent,top还能调用父级窗口的的js方法,比如,getIFrameDOM(iID)是父级窗口的一个方法,那么iframe里可以使用parent.getIFrameDOM(“wIframeA”)来调用父级窗口的getIFrameDOM(iID)方法;
虽然iframe在现在WEB开发中越来越少用到了,但是iframe还有很多值得使用的地方,比如使用iframe解决跨域问题.关于iframe还有很多东西要学习,比如iframe自适应高度,使用iframe解决跨域问题,iframe加载问题,iframe加载性能问题等等,还有很多东西要学习。
最后附上一个在指定iframe打开指定页面的HTML:
function getIFrameDOM(id){ return document.getElementById(id).contentDocument || document.frames[id].document; }
如果我们要获取iframe的window对象,而不是document对象,可以使用document.getElementById(ID).contentWindow的方法。这样我们就可以使用子窗口中的window对象了,比如子窗口中的函数。
在子窗口中,我们可以通过parent就可以获得父窗口的window对象,如果假如我们在父窗口有一个函数为getIFrameDOM,我们可以通过parent.getIFrameDOM来调用,同理我们使用parent.document就可以在子窗口中访问父窗口的document对象了。
父级窗口操作iframe里的dom
JS操作iframe里的dom可是使用contentWindow属性,contentWindow属性是指指定的frame或者iframe所在的window对象,在IE中iframe或者frame的contentWindow属性可以省略,但在Firefox中如果要对iframe对象进行编辑则,必须指定contentWindow属性,contentWindow属性支持所有主流浏览器。相关的还有一个contentDocument属性,这个属性是指指定的frame或者iframe所在的document对象,但是悲剧的是,ie6-ie7并不支持这个属性。
ie6和ie7还可以使用document.frames["iframe Name"]或者document.frames["iframe ID"]来获取相当于contentWindow属性,而firefox和chrome并不支持这些document.frames["iframe Name"]或者document.frames["iframe ID"],但是window.frames["iframe Name"]或window.frames[index](index是索引值)也支持所有主流浏览器。
我们知道document对象是window对象的一个子对象,所以我们可以通过document.getElementById("iframe ID").contentWindow.document来获取iframe的document对象,相当于contentDocument属性。
iframe里的js操作父级窗口的dom
iframe里的js要操作父级窗口的dom,必须搞懂几个对象:parent是父窗口(如果窗口是顶级窗口,那么parent==self==top)。
top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe)。
self是当前窗口(等价window)。
opener是用open方法打开当前窗口的那个窗口。
这样iframe里的js要操作父级窗口的dom可以通过parent,top这些对象来获取父窗口的window对象,例如:
parent.document.getElementById("dom ID");
parent,top还能调用父级窗口的的js方法,比如,getIFrameDOM(iID)是父级窗口的一个方法,那么iframe里可以使用parent.getIFrameDOM(“wIframeA”)来调用父级窗口的getIFrameDOM(iID)方法;
虽然iframe在现在WEB开发中越来越少用到了,但是iframe还有很多值得使用的地方,比如使用iframe解决跨域问题.关于iframe还有很多东西要学习,比如iframe自适应高度,使用iframe解决跨域问题,iframe加载问题,iframe加载性能问题等等,还有很多东西要学习。
最后附上一个在指定iframe打开指定页面的HTML:
<div class="refresh" style="margin-right:4em;"> <label><input type="radio" name="channel" onclick="window.frames['usermessage-content-frame'].location.href='admin05_0.php';" />待审</label> <label><input type="radio" name="channel" onclick="window.frames['usermessage-content-frame'].location.href='admin05_1.php';" />已审</label> <label><input type="radio" name="channel" onclick="window.frames['usermessage-content-frame'].location.href='admin05_2.php';" />已删</label> <label><input type="radio" name="channel" onclick="window.frames['usermessage-content-frame'].location.href='admin05.php';" checked="checked" />全部</label> </div> <div class="refresh"><a href="javascript:void(0);" onclick="javascript:refreshContent('usermessage-content-frame');">刷新</a></div> <div id="usermessage-content-div" class="marginTop5 contentIFrame"> <iframe id="usermessage-content-frame" name="usermessage-content-frame" frameborder="0" src="page05.php"></iframe> </div>
相关文章推荐
- 使用JavaScript下进行iframe的DOM操作(考虑浏览器兼容性)
- JavaScript 操作 iframe 中的Dom
- 使用JavaScript下进行iframe的DOM操作(考虑浏览器兼容性)
- 使用JavaScript下进行iframe的DOM操作(考虑浏览器兼容性)
- 用javascript访问操作iframe里的dom
- 使用JavaScript在IE和Firefox下进行iframe的DOM操作
- 使用JavaScript下进行iframe的DOM操作(考虑浏览器兼容性)
- JavaScript对iframe的DOM操作
- 用javascript访问操作iframe里的dom
- 用javascript访问操作iframe里的dom
- javascript的DOM操作(二)
- JavaScript DOM笔记:获取及操作元素
- javascript DOM 操作
- JavaScript DOM编程基础精华03(动态设置,层的操作,性能问题)
- javaScript DOM操作
- JavaScript基于DOM操作实现简单的数学运算功能示例
- javascript 常用DOM操作整理
- JavaScript 操作 DOM 常用 API 总结
- JAVASCRIPT中使用DOM操作XML文档
- Javascript标准DOM Range操作