在應用有frameset或者iframe的頁面時,parent是父窗口,top是最頂級父窗口(有的窗口中套了好幾層frameset或者iframe),self是當前窗口, opener是用open方法打開當前窗口的那個窗口。
window.self
功能:是對當前窗口自身的引用。它和window屬性是等價的。
語法:window.self
注:window、self、window.self是等價的。
window.top
功能:返回頂層窗口,即瀏覽器窗口。
語法:window.top
注:如果窗口本身就是頂層窗口,top屬性返回的是對自身的引用。
window.parent
功能:返回父窗口。
語法:window.parent
注:如果窗口本身是頂層窗口,parent屬性返回的是對自身的引用。
在框架網頁中,一般父窗口就是頂層窗口,但如果框架中還有框架,父窗口和頂層窗口就不一定相同了。
判斷當前窗口是否在一個框架中:
<script type="text/javascript">
var b = window.parent==window.self;
document.write( "當前窗口是否是底層窗口:"+b );
</script>
你應當將框架視為窗口中的不同區域,框架是瀏覽器窗口中特定的部分。一個瀏覽器窗口可以根據你的需要分成任意多的框架,一個單個的框架也可以分成其它多個框架,即所謂的嵌套框架。
parent與opener的區別:
parent指父窗口,在frameset中,frame的parent就是frameset窗口。
opener指用window.open方式創建的新窗口對應的原窗口。
parent是相對於框架來說父窗口對象。
opener是針對於用window.open打開的窗口來說的父窗口,前提是window.open打開的才有。
附:Window對象、Parent對象、Frame對象、Document對象和Form對象的階層關系。
Window對象→Parent對象→Frame對象→Document對象→Form對象。
如下: parent.frame.document.forms[0].elements[0].value。