window.opener是當(dāng)前頁(yè)面A通過(guò)open方法彈出一個(gè)窗口B,那在B頁(yè)面上 window.opener就是A
window.parent是當(dāng)前頁(yè)面C通過(guò)location.href轉(zhuǎn)到新的頁(yè)面D,那在D頁(yè)面上window.parent就是B
或者是頁(yè)面E里套一個(gè)frame為F,那F頁(yè)面的window.parent就是E
A頁(yè)面通過(guò)open方法打開B頁(yè)面,B頁(yè)面通過(guò)location打開C頁(yè)面,C頁(yè)面上刷新A頁(yè)面
function refreshParenetWindow( refreshMethod )
{
switch( refreshMethod )
{
case "ButtonClick":
oParentButton = window.parent.opener.document.getElementById( "btnSearch" );
oParentButton.click(); break;
case "Location":
window.opener.navigate(window.opener.location.href);
break;
default: window.opener.navigate(window.opener.location.href); break;
}
}
A頁(yè)面通過(guò)open方法打開B頁(yè)面,B頁(yè)面通過(guò)open打開C頁(yè)面,C頁(yè)面上刷新A頁(yè)面
在B頁(yè)面的onunload事件中寫一段刷新A頁(yè)面的javascript方法,在C頁(yè)面關(guān)閉的時(shí)候,關(guān)閉B頁(yè)面,就可以實(shí)現(xiàn)。
window.parent與window.opener的區(qū)別 javascript調(diào)用主窗口方法
1: window.parent 是iframe頁(yè)面調(diào)用父頁(yè)面對(duì)象
舉例:
a.html
<html>
<head><title>父頁(yè)面</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中要對(duì)a.htm中的username文本框賦值,就如很多上傳功能,上傳功能頁(yè)在Ifrmae中,上傳成功后把上傳后的路徑放入父頁(yè)面的文本框中
我們應(yīng)該在b.html中寫
<script type="text/javascript">
var _parentWin = window.parent ;
_parentWin.form1.username.value = "xxxx" ;
</script>
實(shí)例地址: http://www./blog/attachments/window.parent實(shí)例/a.html
2: window.opener 是window.open 打開的子頁(yè)面調(diào)用父頁(yè)面對(duì)象
實(shí)例地址: http://www./blog/attachments/window.opener實(shí)例/a.html
opener:對(duì)打開當(dāng)前窗口的window對(duì)象的引用,如果當(dāng)前窗口被用戶打開,則它的值為null.
self:自引用屬性,是對(duì)當(dāng)前window對(duì)象的應(yīng)用,與window屬性同義.
self代表自身窗口,opener代表打開自身的那個(gè)窗口,比如窗口A打開窗口B.如果靠window.open方法,則對(duì)于窗口B,self代表B自己,而opener代表窗口A.
|