以往一直在編寫的都是前臺的UI,不多使用到frameset、iframe,對其瞭解也是十分有限,只是知道其能夠爲其當前頁面引入html文件成爲當前頁的一部分,可是這兩天在作後臺UI界面的時候,發現這樣的框架也是有至關多知識點在裏面的。那框架是啥?能夠這樣說:經過使用框架,你能夠在同一個瀏覽器窗口中顯示不止一個頁面。每份HTML文檔稱爲一個框架,而且每一個框架都獨立於其餘的框架。那麼關於框架,有幾個方面是須要我瞭解的:html
(1)得到html頁面上的frame瀏覽器
window.frames能夠得到本頁面上全部frame集合,用法與document.forms,document.imgs的用法類似,這是這裏用的是window對象,獲取某個框架能夠這樣作window.frames[0]、window.frames['frameName']、frames['frameName']、frames[0]、self.frames[0],此處self與window等價,至關於本頁面的window對象。框架
這裏也還要再看兩個屬性,contentWindow、contentDocument兩個屬性,也是能夠用來獲取子窗口,框架的window對象的。函數
contentWindow 兼容各個瀏覽器,可取得子窗口的 window 對象。spa
contentDocument Firefox 支持,> ie8 的ie支持。可取得子窗口的 document 對象。code
假如我要刷新本頁面中第一個框架的頁面,能夠怎麼作:orm
window.frames[0].contentWindow.location.reload();
(2)父框架調用子框架的變量或函數htm
結合上面說的得到頁面上的frame,那麼調用子框架的變量或是函數能夠這樣來:對象
frames[0].a; frames[0].refresh();
alert(frames[0].location.href);
這是調用第一個框架裏面的a變量和refresh函數。blog
(3)子框架調用父框架的變量或函數
對於子框架調用父框架的這種狀況下,window有個屬性叫parent,用來調用上層框架的,因此能夠這樣來:
window.parent.a;
window.parent.refresh();
這是調用子框架調用父框架的a變量和refresh函數。
(4)兄弟框架之間的調用
能夠經過它們的父框架來相互調用,能夠這樣作
self.parent.frames['child1'];
self.parent.frames['child2'];
(5)多層框架的調用
window.frames[0].frames[2];
window.frames['child_1'].frames['sub_child_3'];
(6)頂層框架
首先須要判斷是否爲頂層框架,也就是根,能夠這樣來作:
if(self==window.top){ //.... } /*window的另一個屬性top,它表示對頂層框架的引用,這能夠用來判斷一個框架自身是否爲頂層框架*/
基本關於frameset和iframe之間的互相調用知識點就這些,這個嘛,忽略,http://t.cn/RUbL4rP!