在传统的WINDOWS EXE程序中,模态对话框经常出现。例如,写字板程序(WORDPAD.EXE)中的“查看/选项(O)...”菜单被点中后,跳出“选项”对话框,用户一定要响应该对话框,如果该对话框不关闭,是无法回到主窗口的。这经常被应用于要求用户输入多个参数的场合。我们在浏览器中也可以简单地实现该功能。 ---- 在IE浏览器中,要求用户输入可以使用VBScript的INPUTBOX函数、或者J Script的window.prompt方法,但是界面都比较单调,并且只能传递一个参数,而用DHTML来实现就灵活多了。 ---- 1. 基本语法 ---- window对象有一个方法称为showModalDialog,我们可以在页面按钮的onclick中写如下代码: < BUTTON onclick="window.showModalDialog ('dialog.htm')" >Search< /BUTTON > ---- 系统会在新窗口中打开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'。例如: < SCRIPT FOR=window EVENT=onload LANGUAGE="JScript" > if (window.dialogArguments != null) window.document.all.iptPeopleID.value = window.dialogArguments; < /SCRIPT > ---- 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 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liang4571231/archive/2009/04/29/4135316.aspx