父窗體與子窗體通訊
A通過window.open()方式打開B,B如何在A的下拉列表框中增加一個選項????
window.opener.document.getElementbyId("select").options.add(new Option("display","value"))
window.opener 返回的是對父窗體的一個引用,通過它可以控制父窗體,常見有:
[@more@]1、設置父頁面背景
window.opener.document.body.backgroundColor = "red" ;
2、刷新父頁面
window.opener.location.reload();
3、設置父頁面文本框的值
window.opener.document.getElementById("txtUserName").value = "張三" ;
4、設置父頁面單選按鈕的狀態
window.opener.document.getElementById("rdoMan").checked = true ;
5、顯示父頁面的層(利用層的透明屬性可以制作蒙板效果)
window.opener.document.getElementById("divMask").style.display = "block" ;
6、讓父頁面應用濾鏡效果 -- 應用灰度濾鏡
window.opener.document.body.style.filter = "gray()"
function addOptions(){
//構造一個option選項
var op = new Option("新浪","www.sina.com.cn");
//自己窗口的select選項中再添加一項
window.document.getElementById("newUrl").options.add(op);
//子窗體獲得父窗體中定義的變量
//alert(window.opener.obj);
//子窗體為父窗體的文本框賦值
window.opener.document.getElementById("username").value="accp";
//子窗體控制父窗體中表單的單選按鈕 window.opener.document.getElementById("man").checked=true;
//子窗體控制父窗體中表單的下拉列表框
//window.opener.documenet.getElementById("myUrl").options.length = 0; //window.opener.document.getElementById("myUrl").options[i] = op ;
//????????????子窗體怎樣取得父窗體中的下拉列表框的選項
//答案就是通過window.opener.document創建節點的方式來解決。
//創建一個父窗體的Option節點
var op2 = window.opener.document.createElement("option");
//創建一個父窗體的文本節點
var txtNode = window.opener.document.createTextNode("新浪");
//為父窗體的Option節點添加屬性
op2.setAttribute("value","www.sina.com.cn");
//將父窗體的文本節點做為子節點添加到Option節點上
op2.appendChild(txtNode);
//最后將創建好的Option節點添加到父窗體的options集合中 window.opener.document.getElementById("myUrl").options.appendChild(op2) ;
//暫停后面的關閉自己操作,觀看父窗口的變化
alert();
其實在JS中認為父窗體與子窗體優先級不一樣,子窗體不用將opener置空也能無彈框關閉自己窗口,但是父窗體認為有很重要內容,需要客戶確定,所以就提示如果將opener置空,則優先級變為普通窗休,沒有父窗體,關閉時不用彈框建議將opener置空,否則opener在達到一定數量后瀏覽器才清空。
window.opener = null ;
self.close();
}
注意:如果是showModalDialog方法打開的子窗口,控制父窗體應該這樣做:
window.showModalDialog('default2.aspx',
{doc:document,win:parent},
'...');
dialogArguments.doc.all.Text1.value = "123";
需要注意的2點
1:showModalDialog的第二個參數很關鍵
2:子窗口的dialogArguments對象來控制很重要
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/ppjava2009/archive/2010/02/24/5323312.aspx
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。