window.opener 的用法
window.opener 返回的是創建當前窗口的那個窗口的引用,比如點擊了a.htm上的一個鏈接而打開了b.htm,然后我們打算在b.htm上輸入一個值然后賦予a.htm上的一個id為“name”的textbox中,就可以寫為:
window.opener.document.getElementById("name").value = "輸入的數據";
對于javascrīpt中的window.opener沒有很好的理解。
為什么框架中不能使用,彈出窗口的父窗口不能在框架里面的某個頁面呢?那怎樣通過彈出窗口操作框架中的父窗口呢?
opener.parent.frames['frameName'].document.all.input1.value 試試這個:)
正確使用window.open返回對象的opener |
|
眾所周知JavaScript中:
var win = window.open(url,windowName,...); 的使用,
而win.opener則是指向父窗口的引用
然而,有種情況卻比較特別,
假如有兩個窗口window1和window2
按下列步驟執行:
var win = window.open(url,windowName,...);// (window1)
var win = window.open(url,windowName,...);//(window2)
其中先后這兩次打開的子窗口的windowName一樣
此時你會發現在window2中的win.opener卻不是指向window2的,卻是指向window1.
如果你想在子窗口關閉父窗口的話,就不正確了,因此可以修改上面的執行方法為:
var win = window.open(url,windowName,...);? (window1)
win.opener = window;
var win = window.open(url,windowName,...);? (window2)
win.opener = window;
只有這樣修改才OK
|
通過window.showModalDialog或者.showModelessDialog彈出的頁面
這種情況需要兩個步驟:
1 在父窗口.showModalDialog或.showModelessDialog方法的第二個參數傳遞window對象
比如: window.showModelessDialog('a.htm',window);
2 在a.htm中就可以通過window.dialogArguments獲取該參數
比如: window.dialogArguments.fun1();
PS:子窗口可以通過設置window.returnValue設置頁面返回值
比如: window.returnValue=’OK’;window.close();
strRtn=window.showModalDialog(......)
這時,strRtn='ok'