首页 > 代码库 > showModalDialog模态对话框的使用

showModalDialog模态对话框的使用

基本介绍:
         showModalDialog() (IE 4+ 支持)
         showModelessDialog() (IE 5+ 支持)
         window.showModalDialog() 方法用来创建一个显示HTML内容的模态对话框
         window.showModelessDialog() 方法用来创建一个显示HTML内容的非模态对话框
使用方法:
         vReturnValue = http://www.mamicode.com/window.showModalDialog(sURL [, vArguments] [,sFeatures])
         vReturnValue = http://www.mamicode.com/window.showModelessDialog(sURL [, vArguments] [,sFeatures])
参数说明:
         sURL       -- 必选参数,类型:字符串。用来指定对话框要显示的文档的URL
         vArguments -- 可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过
                       window.dialogArguments来取得传递进来的参数
         sFeatures  -- 可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号;隔开
----------------
1. dialogHeight: 对话框高度,不小于100px
2. dialogWidth: 对话框宽度
3. dialogLeft: 离屏幕左的距离
4. dialogTop: 离屏幕上的距离
5. center: { yes | no | 1 | 0 } : 是否居中,默认yes,但仍可以指定高度和宽度
6. help: {yes | no | 1 | 0 }: 是否显示帮助按钮,默认yes
7. resizable: {yes | no | 1 | 0 } [IE5+]: 是否可被改变大小。默认no
8. status: {yes | no | 1 | 0 } [IE5+]: 是否显示状态栏。默认为yes[ Modeless]或no[Modal]
9. scroll: {yes | no | 1 | 0 | on | off }: 是否显示滚动条。默认为yes
--下面几个属性是用在HTA(HTML Application)中的,在一般的网页中一般不使用
10. dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no
11. edge:{ sunken | raised }:指明对话框的边框样式。默认为raised
12. unadorned:{ yes | no | 1 | 0 | on | off }:默认为no

 

基本用法:

1、传递参数(通过vArguments来进行传递的,类型不限制,对于字符串类型,最大为4096个字符,也可以传递对象)

2、返回参数(通过window.returnValue向打开对话框的窗口返回信息,可以为字符串数值或对象)

父文件(parent.html):

 

<script language ="JavaScript"><!--    function testModal(){        var obj = new Object();        obj.name="sky";        var returnStr = window.showModalDialog("modal.html",obj,"dialogWidth=580px;dialogHeight=300px");        if(returnStr=="close"){             //TODO  reload the part of price        }    }              --></script>

 

 

 

子文件(modal.html):

 

<script language ="JavaScript"><!--    var obj = window.dialogArguments;    alert("name is :" + obj.name);    function closeModal(){      window.returnValue="close";      window.close();    }--></script>

 

3、在IE的modal窗口操作数据经过服务器传到页面会打开新的页面,而不是原来的modal窗口,解决办法如下

parent.jsp

<script language ="JavaScript"><!--    function doPriceModify(dealKbn,revDt){      var partId = $("#partId").val();      var url = "PartModify?partId="+partId;      var winReturn = window.showModalDialog(url,"PartModify","dialogWidth:850px;dialogHeight:500px");      if(winReturn=="close"){              }}--></script>

PartAction.java

@Namespace("/")@ParentPackage("struts-default")@Results( { @Result(name = "success", location = "/WEB-INF/view/modalFrame.jsp")           ,@Result(name = "login", location = "/WEB-INF/view/modal.jsp")})public class PartAction extends ActionSupport {    private static final long serialVersionUID = 1L;    private String partId;        @Action("partModify")    public String partModify() throws Exception {        return SUCCESS;    }        @Action("showPart")    public String showPart() throws Exception {        return LOGIN;    }    public String getPartId() {        return partId;    }    public void setPersons(String partId) {        this.partId = partId;    }}

modalFrame.jsp

<!doctype html><html><head><title>partModify</title><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta http-equiv=Content-Style-Type content=text/css></head><frameset rows="100%"><frame src="http://www.mamicode.com/showPart?partId=${partId}" name="partModify" scrolling="auto" noresize></frameset></html>

modal.jsp

<!doctype html><html><head><title>partModify</title><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta http-equiv=Content-Style-Type content=text/css><script language ="JavaScript"><!--    function closeModal(){      window.returnValue="close";      window.close();    }--></script></head><body><form action="modify" method="post" target="partModify"></form></body></html>