父窗口:
复制代码 代码如下:
无标题页
子窗口:
复制代码 代码如下:
无标题页
---- 1. 基本语法 ---- window对象有一个方法称为showmodaldialog ,我们可以在页面按钮的onclick中写如下代码:
('dialog.htm') >search
---- 系统会在新窗口中打开dialog.htm页面,并且等待用户响应,如果用户不响应该页面,那么主页面将得不到光标。
---- 在dialog.htm中设置window对象的returnvalue属性,就可以让主页面得到返回值。例如,在页面的确定按钮的onclick中写:
window.returnvalue = window.
document.all.iptpeopleid.value
---- 将输入框iptpeopleid的值赋给window对象的returnvalue属性。在主页面中就可以得到这个值:
var str = showmodaldialog (dialog1.htm)
---- 2. 传递初始化值
---- 如果要向模态页面中传递初始化值,可以在主页面中用如下语句:
var csearchvalue=showmodaldialog
('dialog.htm', 'abc')
在dialog.htm中使用window.dialogarguments
属性可以得到'abc'。例如:
if (window.dialogarguments != null)
window.document.all.iptpeopleid.value = window.dialogarguments;
---- 3. 传递多个数值
---- 如果要向模态页面中传递多个参数,可以先在主页面中定义一个对象,
function mydialog() {
var str1;
var str2;
}
---- 显示模态页面之前初始化该对象,然后调用showmodaldialog 方法。
function welcomeyou(inistr1,inistr2) {
mydialog.str1 = inistr1;
mydialog.str2 =inistr2 ;
if (showmodaldialog (dialog2.htm, mydialog)
==false) //将对象传入
......
---- 在模态页面中,可以用这样的代码
window.document.all.iptid.value=
window.dialogarguments.str1
来引用数值,或者用这样的代码对之赋值
window.dialogarguments.str1 =
window.document.all.iptid.value
---- 完整例程如下:
---- 对于只传递一个参数的情况,见:main1.htm和dialog1.htm。
---- 对于传递多个参数的情况,见:main2.htm和dialog2.htm。
父窗体:
dim xxx '返回值
dim yyy '传到子窗体的参数
var xxx = showmodaldialog ('xxx.asp','yyy','dialogwidth:100px;dialogheight=290px;status:no')
子窗体:
dim yyy '从父窗体传来的参数
dim xxx '传回父窗体的参数
yyy = window.dialogarguments
xxx = window.returnvalue
window.dialogarguments的用法
javascript有许多内建的方法来产生对话框,如:window.alert(),window.confirm(),window.prompt().等。然而ie提供更多的方法支持对话框。如:
showmodaldialog()(ie4+支持)
showmodelessdialog()(ie5+支持)
window.showmodaldialog()方法用来创建一个显示html内容的模态对话框,由于是对话框,因此它并没有一般用window.open()打开的窗口的所有属性。
window.showmodelessdialog()方法用来创建一个显示html内容的非模态对话框。
当我们用showmodelessdialog()打开窗口时,不必用window.close()去关闭它,当以非模态方式[ie5]打开时,打开对话框的窗口仍可以进行其他的操作,即对话框不总是最上面的焦点,当打开它的窗口url改变时,它自动关闭。而模态[ie4]方式的对话框始终有焦点(焦点不可移走,直到它关闭)。模态对话框和打开它的窗口相联系,因此我们打开另外的窗口时,他们的链接关系依然保存,并且隐藏在活动窗口的下面。
使用方法如下:
vreturnvalue=window.showmodaldialog(surl[,varguments][,sfeatures])
vreturnvalue=window.showmodelessdialog(surl[,varguments][,sfeatures])
参数说明:
surl
必选参数,类型:字符串。用来指定对话框要显示的文档的url。
varguments
可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogarguments来取得传递进来的参数。
sfeatures
可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
dialogheight对话框高度,不小于100px,ie4中dialogheight和dialogwidth默认的单位是em,而ie5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。
dialogwidth:对话框宽度。
dialogleft:距离桌面左的距离。
dialogtop:离桌面上的距离。
center:{yes|no|1|0}:窗口是否居中,默认yes,但仍可以指定高度和宽度。
help:{yes|no|1|0}:是否显示帮助按钮,默认yes。
resizable:{yes|no|1|0}[ie5+]:是否可被改变大小。默认no。
status:{yes|no|1|0}[ie5+]:是否显示状态栏。默认为yes[modeless]或no[modal]。
scroll:{yes|no|1|0|on|off}:指明对话框是否显示滚动条。默认为yes。
还有几个属性是用在hta中的,在一般的网页中一般不使用。
dialoghide:{yes|no|1|0|on|off}:在打印或者打印预览时对话框是否隐藏。默认为no。
edge:{sunken|raised}:指明对话框的边框样式。默认为raised。
unadorned:{yes|no|1|0|on|off}:默认为no。
传入参数:
要想对话框传递参数,是通过varguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:
test1.htm
====================
test2.htm
====================
test3.htm
====================
可以通过window.returnvalue向打开对话框的窗口返回信息,当然也可以是对象。例如:
test4.htm
===================
test5.htm
===================
常见问题:
1,如何在模态对话框中进行提交而不新开窗口?
如果你的浏览器是ie5.5+,可以在对话框中使用带name属性的iframe,提交时可以制定target为该iframe的name。对于ie4+,你可以用高度为0的frame来作:例子,
test6.htm
===================
test7.htm
===================
if(window.location.search)alert(window.location.search)
test8.htm
===================
2,可以通过http://servername/virtualdirname/test.htm?name=mxh方式直接向对话框传递参数吗?
答案是不能。但在frame里是可以的。