在應用有frameset或者iframe的頁面時,parent是父窗口,top是最頂級父窗口(有的窗口中套了好幾層frameset或者iframe),self是當前窗口, opener是用open方法打開當前窗口的那個窗口。javascript
window.selfhtml
功能:是對當前窗口自身的引用。它和window屬性是等價的。java
語法:window.self瀏覽器
注:window、self、window.self是等價的。框架
window.topjsp
功能:返回頂層窗口,即瀏覽器窗口。orm
語法:window.tophtm
注:若是窗口自己就是頂層窗口,top屬性返回的是對自身的引用。對象
window.parentip
功能:返回父窗口。
語法:window.parent
注:若是窗口自己是頂層窗口,parent屬性返回的是對自身的引用。
在框架網頁中,通常父窗口就是頂層窗口,但若是框架中還有框架,父窗口和頂層窗口就不必定相同了。
判斷當前窗口是否在一個框架中:
<script type="text/javascript"> var b = window.top!=window.self; document.write( "當前窗口是否在一個框架中:"+b ); </script>
你應當將框架視爲窗口中的不一樣區域,框架是瀏覽器窗口中特定的部分。一個瀏覽器窗口能夠根據你的須要分紅任意多的框架,一個單個的框架也能夠分紅其它多個框架,即所謂的嵌套框架。
js中opener和parent的區別 opener即誰打開個人,好比A頁面利用window.open彈出了B頁面窗口,那麼A頁面所在窗口就是B頁面的
opener,在B頁面經過opener對象能夠訪問A頁面。
parent表示父窗口,好比一個A頁面利用iframe或frame調用B頁面,那麼A頁面所在窗口就是B頁面的parent。在JS 中,window.opener只是對彈出窗口的母窗口的一個引用。好比:a.html中,經過點擊按鈕等方式window.open出一個新的窗口 b.html。那麼在b.html中,就能夠經過window.opener(省略寫爲opener)來引用a.html,包括a.html的 document等對象,操做a.html的內容。 假如這個引用失敗,那麼將返回null。因此在調用opener的對象前,要先判斷對象是否爲null,不然會出現「對象爲空或者不存在」的JS錯誤。
<html> <body> <form. name=form1> <input type=text name=inpu > <input type=button > </form> </body> </html> -------------------------------- back2opener.html -------------------------------- <html> <body> <form. name=form1> <input type=text name=inpu >
<a class="under" href=# >添加</a>
</form> </body> </htmlwindow.opener 返回的是建立當前窗口的那個窗口的引用,好比點擊了a.htm上的一個連接而打開了b.htm,而後咱們打算在b.htm上輸入一個值而後賦予a.htm上的一個id爲「name」的textbox中,就能夠
常見的誤區: 父頁面 window.open( 'open.jsp?City= '+strCity, ' ', 'width=252, height=100, scrollbars=no '); 子頁面open.jsp window.parent.maplet.clean(); 報錯爲window.parent.maplet爲空或不是對象! 什麼緣由呢?別的沒有問題! 錯誤緣由: window.parent 表示當前框架的父框架, 若是子窗口不在框架中,那麼就爲空, 不是表示子窗口和父窗口的關係, 是框架之間的關係。 若是子窗口不在框架中,即經過A.html的一個連接打開的 B.html頁面,在B.html引用A.html的表單元素時,能夠這樣寫: window.opener.document.formname.maplet 其中formname是你父窗口中form的名字