父窗体与子窗体通讯
A通过window.open()方式打开B,B如何在A的下拉列表框中增加一个选项????
window.opener.document.getElementbyId("select").options.add(new Option("display","value"))
window.opener 返回的是对父窗体的一个引用,通过它可以控制父窗体,常见有:
[@more@]设置父页面背景
window.opener.document.body.backgroundColor = "red" ;
刷新父页面
window.opener.location.reload();
设置父页面文本框的值
window.opener.document.getElementById("txtUserName").value = "张三" ;
设置父页面单选按钮的状态
window.opener.document.getElementById("rdoMan").checked = true ;
显示父页面的层(利用层的透明属性可以制作蒙板效果)
window.opener.document.getElementById("divMask").style.display = "block" ;
让父页面应用滤镜效果 -- 应用灰度滤镜
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