当前位置 > 首页 > Asp.net

跨浏览器仿模式对话框的实现

5/14/2007 10:13:00 AM来源:Asp.net

    模式对话框,可以很方便地在网页间传递数据,并且可以让用户进行线性操作,IE上的showModalDialog效果不错,但可惜其他浏览器又不支持,况且IE也远离了95%的市场占有率。网上有很多仿模式窗体,多数采用iframe技术,有的做得非常绚丽,可是我费了很大的劲却没有找到一个适合我需要的,有的不能随意弹出多级对话框,有的不能很好地传递参数,iframe模式的对话框不能打开比主窗体大的对话框,更有甚者,有的在对话框中只能使用静态网页(比如在话框中动态生成颜色列表就不能支持),当然,它们很适合一些具体的应用,比如有的用于展示图片就很适合。但模式对话框的核心还是实现线性操作、传递参数、界面操作的模块化。无赖之下,只有自己实现了一个,只有几十行代码,自认为比较精彩,可以非常容易地传递任何参数,可以轻易的打开多级对话框,在我的系统里使用良好。
    所有代码如下:(另:代码演示和下载)

//*************************************************************************************
//
* p2cpdlg跨浏览器仿模式窗体:                                                     ***
//
* Copyright(c) 2007 www.bokehou.com 雪域刀客 chinaxiaofei.cnblogs.com             ***
//
*************************************************************************************
//
* 使用说明:
//
* (1) 实现主窗体文档demo.html,如:
//
*     <html>
//
*         <head>
//
*         <title>主窗体</title>
//
*         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
//
*         <script type="text/javascript" src="p2cpdlg.js"></script>
//
*         <script type="text/javascript">
//
*         function dlg_open()
//
*         {
//
*             var arr = new Array();
//
*             arr["up01"] = "111";
//
*             arr["up02"] = "222";
//
*             p2cpdlg.dialogOpen('demo_testdialog.html',400,300,arr,"dlg_callback()","dialog_test");   
//
*         }
//
*         function dlg_callback()
//
*         {
//
*             var arr = null;
//
*             arr = p2cpdlg.params_up;
//
*             if(arr != null)
//
*             {
//
*                 window.alert("上传的参数:"+arr["up01"]+","+arr["up02"]);
//
*             }
//
*             arr = p2cpdlg.params_down;
//
*             if(arr != null)
//
*             {
//
*                 window.alert("下传的参数:"+arr["dn01"]+","+arr["dn02"]);
//