子窗口与父窗口之间的传值
/*子窗口与父窗口之间的传值*/
window对象的open()方法,open()方法将产生一个新的window窗口对象
用法 : window.open(URL,windowName,parameters);
URL:描述要打开的窗口的URL地址,如何为空则不打开任何任何网页
windowName:描述被打开的窗口的名称,可以使用“_top”、"_blank"等内建名称这
这里的名称和<a href="" target=""/>target里的属性一样!
parameters:描述被打开的窗口的参数值,或者说是样貌其包括页面的属性以及传入的参数
参数如下:
top=# 窗口顶部离开屏幕顶部的像素数
left=# 窗口左端离开屏幕左端的像素数
width=# 窗口的宽度
height=# 窗口的高度
menubar=... 窗口有没有菜单,取值yes或no
toolbar=... 窗口有没有工具条,取值yes或no
location=... 窗口有没有地址栏,取值yes或no
directories=... 窗口有没有连接区,取值yes或no
scrollbars=... 窗口有没有滚动条,取值yes或no
status=... 窗口有没有状态栏,取值yes或no
HTML中的单一对话框还有:
alert();信息提示窗口
confirm();信息确认框
prompt();具有交互性
以上只能实现单一的功能;
使用模态对话框就可以实现复杂的对话框需求:
模态分为模态和非模态
模态:
window.showModalDialog(sURL,vArguments,sFeatures)
非模态:
window.showModalessDialog(sURL,vArguments,sFeatures)
其区别在于:
用showModelessDialog()打开窗口时,不必用window.close()去关闭
sURL:用来指定对话框要显示的文档的URL;
vArguments:用来向对话框传递参数。传递的参数类型不限,包括数组等。
对话框通过window.dialogArguments来取得参数的值(最大传值4096个字符)可以传递任意类型
sFeatures:是用来描述对话框的外观的,多个参数用“;”分号分隔
【
dialogHeight:对话框高度
不小于100px,IE4中dialogHeight和dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。
dialogWidth: 对话框宽度。
dialogLeft: 距离桌面左的距离。
dialogTop: 离桌面上的距离。
center: 窗口是否居中
默认yes,但仍可以指定高度和宽度,取值范围{yes | no | 1 | 0 }。
help: 是否显示帮助按钮
默认yes,取值范围 {yes | no | 1 | 0 }。
resizable: 是否可被改变大小。
默认no,取值范围 {yes | no | 1 | 0 } [IE5+]。
status: 是否显示状态栏。
默认为yes[ Modeless]或no[Modal],
取值范围{yes | no | 1 | 0 } [IE5+]。
scroll:指明对话框是否显示滚动条。
默认为yes,取值范围{ yes | no | 1 | 0 | on | off }。
还有几个属性是用在HTA中的,在一般的网页中一般不使用。
dialogHide:在打印或者打印预览时对话框是否隐藏。
默认为no,取值范围{ yes | no | 1 | 0 | on | off }。
edge:指明对话框的边框样式。
默认为raised,取值范围{ sunken | raised }。
unadorned:默认为no,取值范围{ yes | no | 1 | 0 | on | off }。
】
与window.open相比 用模态方法创建的窗口不能操作父窗口
【1】使用window.open与父窗口进行通信
可以在子窗口页面中通过window.opener来获取父窗口对象,获取之后可以对父窗口进行刷新,传值等操作如:
window.opener.location.reload()//子窗口刷新父窗口
window.opener.location.href//获取父窗口的href
window.opener.location.pathname//获取父窗口路径名
【2】模态窗口与父窗口的通信
通过使用showModelDialog()和showModelessDialog()不能通过window.opener来获取父页面对象;
父窗口应为:
var newWin = window.showModelDialog(url,window,"");
newWin.open():
这里的window就是指的你窗口
在子页面中:
var parent = window.dialogArguments;
这里的parent就为父窗口对象
例如:通过子窗口提交父窗口的form
parent.document.form1.action = "";
parent.submit();
//刷新父窗口
parent.location.reload();
在模态窗口中如果想实现子窗口向父窗口传值可以使用
window.returnValue完成
父窗口就把showModelDialog()方法赋值给一个变量即可