在js中window.self,window.top,window.parent,window.opener四個的做用區別仍是很大的,javascript
window.self,window.top是打開模式,html
而window.parent,window.opener是父窗口打開模式,下面我來介紹介紹。java
===============================================================瀏覽器
在應用有frameset或者iframe的頁面時,框架
parent是父窗口,spa
top是最頂級父窗口(有的窗口中套了好幾層frameset或者iframe),code
self是當前窗口,orm
opener是用open方法打開當前窗口的那個窗口。htm
window.self對象
功能:是對當前窗口自身的引用。它和window屬性是等價的。
語法:window.self
注:window、self、window.self是等價的。
window.top
功能:返回頂層窗口,即瀏覽器窗口。
語法:window.top
注:若是窗口自己就是頂層窗口,top屬性返回的是對自身的引用。
window.parent
功能:返回父窗口。
語法:window.parent
注:若是窗口自己是頂層窗口,parent屬性返回的是對自身的引用。
在框架網頁中,通常父窗口就是頂層窗口,但若是框架中還有框架,父窗口和頂層窗口就不必定相同了。
javascript調用父窗口(父頁面)的方法。
window.parent 是iframe頁面調用父頁面對象
舉例:
a.html
程序代碼
<html> <head><title>父頁面</title></head> <body> <form name="form1" id="form1"> <input type="text" name="username" id="username"/> </form> <iframe src="b.html" width=100%></iframe> </body> </html>
若是咱們須要在b.htm中要對a.htm中的username文本框賦值,就如不少上傳功能,上傳功能頁在Ifrmae中,上傳成功後把上傳後的路徑放入父頁面的文本框中
咱們應該在b.html中寫
<script type="text/javascript"> var _parentWin = window.parent ; _parentWin.form1.username.value = "xxxx" ; </script>
你應當將框架視爲窗口中的不一樣區域,框架是瀏覽器窗口中特定的部分。一個瀏覽器窗口能夠根據你的須要分紅任意多的框架,一個單個的框架也能夠分紅其它多個框架,即所謂的嵌套框架。
window.opener 的用法
window.opener 返回的是建立當前窗口的那個窗口的引用,好比點擊了a.htm上的一個連接而打開了b.htm,而後咱們打算在b.htm上輸入一個值而後賦予a.htm上的一個id爲「name」的textbox中,就能夠寫爲:
window.opener.document.getElementById("name").value = "輸入的數據";