在应用有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
。