温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

子窗体与父窗体的通讯

发布时间:2020-08-11 11:33:13 来源:ITPUB博客 阅读:114 作者:dengxinjian 栏目:编程语言

父窗体与子窗体通讯
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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI