原生JS操作iframe里的dom


轉:http://www.css88.com/archives/2343

一、父級窗口操作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是索引值)也支持所有主流瀏覽器

這個可以看實例:http://www.css88.com/demo/iframe-correspond/index-test.html

我們知道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)方法;

————————————————

查看一下JS操作iframe里的dom的demo:http://www.css88.com/demo/iframe-correspond/

雖然iframe在現在WEB開發中越來越少用到了,但是iframe還有很多值得使用的地方,比如使用iframe解決跨域問題.關於iframe還有很多東西要學習,比如iframe自適應高度,使用iframe解決跨域問題,iframe加載問題,iframe加載性能問題等等,還有很多東西要學習


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM