分享
 
 
 

在BS系统中使用模态对话框(showModalDialog)的解决方案

王朝java/jsp·作者佚名  2004-11-18
窄屏简体版  字體: |||超大  

我们知道在BS系统中如果想使用模态对话框,我们就要用window.showModalDialog()这个方法, showModalDialog()方法是用来创建一个显示HTML内容的模态对话框,这篇文档是用来对使用showModalDialog()产生模态对话框进行各种应用时产生的问题的解决方法,这篇文档适用于asp,php,jsp等多种web技术,下面sample代码的我会用jsp。

注:这篇文档不涉及showModalDialog()方法的说明

需要了解的请参阅 Msdn文档,和KingErq网友的文档

http://dev.csdn.net/develop/article/44/44896.shtm

我们先写一个大家都很熟悉的showModalDialog()最简单的使用-我们重写一下javascript中window的alert()方法.

我们先做的事情是新建一个文件alert.jsp

代码为:

<%@ page contentType="text/html;charset=GBK" language="java" pageEncoding="GBK" %>

<%

request.setCharacterEncoding("GBK");

String msg=request.getParameter("msg");%>

<html xmlns:wsc>

<head>

<title>#您的系统名称#----------------------------</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script language=javascript>

function findenter()

{

if (event.keyCode==13)

window.close();

}

</script>

</head>

<body onkeydown=javascript:findenter();>

<center>

<div style="overflow:auto;height:60px" align="center">

<%=msg%>

</div>

<input type=Button value="确定" onclick="javascript:window.close();">

</center>

</body>

</html>

然后在你BS系统的unit.js文件中添加下面一个方法

function alert(msg)

{

var w=250;

var h=150;

posLeft=(screen.width-w)/2

posTop=(screen.height-h)/2

showModalDialog("alert.jsp?msg=" + msg,"","status:no;dialogHeight: " + h +"px; dialogWidth: " + w +"px;status:no;scroll:no;dialogTop: " + posTop + "px; dialogLeft: " + posLeft + "px'");

}

这时候在引用了unit.js的页面中用 alert()方法时,出现的模式对话框就是我们自己定义的alert.jsp对话框了.用这种方法,我们可以在我们的系统中用showModalDialog方法把 window.alert(), window.confirm(),window.prompt() 等ie的默认的提示框都重写一边,这样系统的ui风格就得到了统一,更加美观.

用showModalDialog模拟alert是他最简单的应用,而大部分的BS系统中我们使用模态对话框的目的是有一个清单页面list.jsp,我们要双击list.jsp页面的一条记录时 弹出edit.jsp这个模态对话框,对这条记录进行编辑,这时候问题来了,在模态对话框的文件是不能重新载入的,就是说如果我们在edit.jsp文件里把<form>的数据post到save.jsp的时候,save.jsp不会在模态对话框里出现,而是弹出一个新的IE窗口,这显然是不能忍受的.这个问题的解决方法是这样的:

我们建立一个中间页面 比如openWindow.jsp

我们想在模态对话框中打开edit.jsp的时候调用

showModalDialog打开openWindow.jsp页面,并把edit.jsp的文件名通过get方法传递给openWindow.jsp.

在openWindow.jsp页面里,建立一个iframe,载入传入的url地址edit.jsp.

这时候,不管在edit.jsp页面怎么refresh,怎么post,都会老老实实的呆在模态对话框里了

下面是实现的代码:

openWindow.jsp

<%@ page contentType="text/html;charset=GBK" language="java" pageEncoding="GBK" %>

<%

request.setCharacterEncoding("GBK");

response.addHeader("Cache-Control", "no-cache");

response.addHeader("Expires", "Thu, 01 Jan 1970 00:00:01 GMT");

String dlgurl=request.getParameter("url");

String dlgtitle=request.getParameter("title");

%>

<html>

<head>

<title><%=dlgtitle%></title>

</head>

<body leftmargin=0 topmargin=0 >

<iframe scroll=none width=100 frameborder=0 scrolling=no

height=100 src=<%=dlgurl%>></iframe>

</body>

</html>

在unit.js里添加函数

function showm(title,url,obj,w,h,obj)

{

var posLeft=(screen.width-w)/2

var posTop=(screen.height-h)/2

var url="OpenWindows.jsp?url=" + url + "&title=" + title;

var dlginf="status:no;dialogHeight: " + h +"px; dialogWidth: " + w +"px;status:no;scroll:no;dialogTop: " + posTop + "px; dialogLeft: " + posLeft + "px'";

var rv=showModalDialog(url,obj,dlginf);

return rv;

}

恩,为了方便阅读,我把代码中的对特殊字符的处理和一些状态等待条去掉了,实际使用中可以依据自己使用的实际情况自己优化.

文中是我开发bs系统的对模态窗体使用的一点心得,希望能帮到大家,文中出现的错误,和有更优化的解决方法,请告知 nittystone@hotmail.com 谢谢

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有