在开发 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>