在开发 Intranet Web Mis 的过程中,大家发现如果运用模式对话框,程序的流程将更为清楚。在某些情况,用户必须进行某些操作之后,才能继续后面的事情。比如:某些安全性要求比较高的操作,需要操作者输入口令以确认。如果实现了模式对话框,那么一个WEB程序看上去更象一个VB 或 DELPHI 开发的应用程序。结合运用 ASP 和 DHTML ,可以实现模式对话框。 本文以 msgbox 的实现为例。客户端 VBScript 有一个函数 Msgbox() (以及衍生出来的Alert()、confirm())。我们常常需要 msgbox 显示一些简要提示或是简单选择,但是遗憾的是,Msgbox 功能有巨大缺陷。如果是中文句子,在西文系统下,只怕只能看到一串“ ???”即使安装了中文平台(如南极星)。客户端 Jscript 类似的函数Alert() 和 confirm() ,当然也存在着相同的问题。 幸好,在微软 DHTML 说明书找到了一个函数: showModalDialog() 。结合 DHTML 和ASP 便可实现 MsgBox 的功能,并且无操作平台 CODEPAGE 不同的烦恼。 <<<< showModalDialog 语 法 >>>> variant = object.showModalDialog(sURL [, vArguments [, sFeatures]]) 参数说明: sURL:指定要装载和显示的文件的 URL 地址。 vArguments:可选。Variant 变量在显示文件时设定的参数。这个参数可以传送包括数组在内的数据,对话框通过访问 window 对象的 dialogArguments 属性,来获得这些属性。(注意:通过 ASP 文件后面加?,可以向 ASP 发送参数!) sFeatures:可选。指定对话框窗体的参数,可有下列内容。 语法描述: dialogWidth:number 窗口宽度 dialogHeight:number 窗口高度 dialogTop:number 窗口上部坐标 dialogLeft:number 窗口右部坐标 center:{yes | no | 1 | 0 } 是否居中(缺省为yes) <<<< 以 下 为 msg.asp 源 码 >>>> <%@ LANGUAGE="VBSCRIPT" %> <% dim title dim msg dim itype title=request("title") msg=request("msg") itype=request("type") %> <html> <head> <meta NAME="GENERATOR" Content="Microsoft FrontPage 3.0"> <meta HTTP-EQUIV="Content-Type" content="text/html; charset=gb_2312-80"> <title><%=title%></title> </head> <body language="javascript" onload="window.returnValue=0" topmargin="0" leftmargin="0" bgcolor="#000000" text="#FFFF00"> <table border="0" cellpadding="0" width="100%" cellspacing="0"> <tr> <td width="100%"><p align="center"><br><%=msg%><br> <br> <%if itype=0 then response.write "<input type=@#button@# value=@#确 定@# name=@#cmdOk@# onclick=@#window.returnValue=1;window.close()@#>" elseif itype=1 then response.write "<input type=@#button@# value=@#确 定@# name=@#cmdOk@# onclick=@#window.returnValue=1;window.close()@#> " response.write "<input type=@#button@# value=@#取 消@# name=@#cmdCANCEL@# onclick=@#window.returnValue=0;window.close()@#>" elseif itype=2 then response.write "<input type=@#button@# value=@# 是 @# name=@#cmdYes@# onclick=@#window.returnValue=1;window.close()@#> " response.write "<input type=@#button@# value=@# 否 @# name=@#cmdNo@# onclick=@#window.returnValue=0;window.close()@#>" end if%> </td> </tr> </table> </body> </html> <<<< 调 用 范 例 >>>> <html> <head> <meta NAME="GENERATOR" Content="Microsoft FrontPage 3.0"> <meta HTTP-EQUIV="Content-Type" content="text/html; charset=gb_2312-80"> <title>Document Title</title> </head> <script langauge="javascript"> function message(title,msg,type) { var ret=0; ret=showModalDialog( "msg.asp?itle="+title+"&msg="+msg+"&type="+type, "","dialogWidth:30;dialogHeight:8;center:1") return ret } // 此 函 数 将 调 用 方 法 简 化 , 使 它 在 调 用 方 法 上 看 起 来 更 象 系 统 的 MSGBOX </script> <body> <form method="POST" action="../_vti_bin/shtml.dll/msg/test.asp" webbot-action="--WEBBOT-SELF--"> <p><input type="button" value="test" name="cmdTest1" language="javascript" onclick="alert(message(@#title@#,@#message is here@#,2))"></p> </form> </body> </html> |