Web开发中的弹出对话框控件介绍

Web开发中,目前由于Jquery的大行其道,因此很多弹出对话框,都用到了Jquery技术,反而原始的弹出对话框的方式较为少用了。不过基于JQuery的方式实现对话框窗口弹出,也有很多控件可以利用,由于工作需要及业余兴趣所至,我比较了近10种的对话框控件,其中发现有一些做得很好的,除了功能强大,而且也支持多种皮肤样式,甚至有些对话框的居中都考虑到了,细节决定体验,有些真的不错。

1、原始的弹出对话框实现(弹出窗口也可以)

我们知道,以前在没有应用其他javascript库(例如各种类型的Jquery库)的时候,一般是通过window.open或者window.showModalDialog来弹出非模态或者模态的对话框的,如下脚本所示。

function OpenWin( sURL , sFeatures )
{
    window.open( sURL , null , sFeatures , null)
    //window.open("Sample.htm",null,"height=200,width=400,status=yes,toolbar=no,menubar=no,location=no");
    //window.open( [sURL] [, sName] [, sFeatures] [, bReplace])
    //sName{_blank; _media; _parent; _search; _self; _top}
    //sFeatures{channelmode; directories; fullscreen; height; left; location; menubar; resizable; scrollbars; status; titlebar; toolbar; top; width}
}

function ShowWin( sURL , sFeatures )
{
    if(sFeatures == null || sFeatures == ""){
        sFeatures = 'dialogHeight:300px;dialogWidth:850px;status:no;scroll:yes;resizable:yes;help:no;center:yes;';
     }

    var returnValue= window.showModalDialog( sURL , null , sFeatures)
    //window.showModalDialog("Sample.htm",null,"dialogHeight:591px;dialogWidth:650px;")
    //window.showModalDialog([sURL] [, vArguments] [, sFeatures])
    //sFeatures{dialogHeight; dialogLeft; dialogTop; dialogWidth; center; dialogHide; edge; help; resizable; scroll; status; unadorned}
    if(returnValue != undefined)
    {
        return returnValue;
    }
    else
    {
        return "";
    }
}

这种是原始方式,好处坏处大家都明白,就不说了。

还有一种基于Jquery的原始弹出窗口方式,由于我一般使用的是easy-ui作为界面的基础组件,因此基于easy-ui的原始弹出窗口方式,只能是弹出内部的HTML层内容,对于弹出独立的页面这种方式支持不够好。

    <script type="text/javascript"> 

    function initDialog(divname) {
        var dlg = jQuery(divname).dialog({
            draggable: true,
            resizable: true,
            closed: true,
            show: 'Transfer',
            hide: 'Transfer',
            autoOpen: false,
            width: 500,
            height: 250,
            minHeight: 10,
            minwidth: 10
        });
        dlg.parent().appendTo(jQuery("form:first"));
    };

    function close(divname) {
        $(divname).dialog('close');
    }
    </script>

 

2、Popup的弹出式对话框

这个popup控件弹出的对话框,它好像把弹出的子页面放到了父窗口里面了,感觉是一体化的,所以操作父窗口的对话框也可以,非常方便。

这个popup控件,比较容易使用,不过不好的地方就是不兼容其他浏览器如Chrome等,其他浏览器显示层是错位的,不好看,而且样式也相对比较简单一点了。

但由于在弹出窗口中可以很好操作父窗口的脚本以及使用方便,在我以前的一些项目里面,用的还算比较多。

 

3、AsyncBox的弹出对话框

这个控件感觉做的很不错,而且提供了Chrome、QQBrowser、Ext、ZCMS四种不错的窗体皮肤,适应多种需要,通过修改它们的皮肤图片,还可以定义适合自己项目的样式皮肤,如我修改定义了一种黄色调的样式例子。

不过在使用过程中,发现这个控件,对有些脚本或者Jquery控件有冲突,具体原因未明,总之发现了和基于Jquery的ZTree运行不正常,还有一些Jquery组件使用也不正常,在我的Web权限管理系统中,本来想用这个作为弹出窗口显示一些设置信息的,发现zTree的Node选中值获取不了,也就相当于失效了,非常郁闷,弄了很久,没有找到具体原因。还有另外一个问题,就是这个控件的作者不知道什么原因,好像停止了对该控件的开发了,连它的官网也下架了。

不过对于弹出窗口的使用来说,该控件已经很不错了,提供了多种调用模块,而我一般倾向于弹出另外一个页面这种方式,当然它也支持弹出页面内部的层或者HTML代码等等方式。

 

4、artDialog弹出对话框

这个artDialog弹出对话框组件,是我觉得相当好的一款了,除了支持多种浏览器,而且提供的界面效果更多,目前的版本是V4.1.6,好像还有一个V5.0的Beta版本(https://github.com/aui/artDialog),但是V5.0的就调整了不支持通过art.dialog.open方式弹出独立Web页面的方式了,要实现弹出独立页面,需要使用Iframe的代码,效果就差了一些,所以我倾向于V4.1.6。

该控件支持自动计算居中位置,我们只需要指定对话框的大小即可,当然它很好支持页面内的层内容的弹出显示,不过我更关注的是独立页面的弹出对话框显示,我在具体的Web权限管理系统中应用的效果如下所示(结合了ZTree控件,运行正常)。

这个控件提供了很多参数以及方法,对实现调用非常强大。

    <script src="http://www.cnblogs.com/JQueryTools/artDialog/artDialog.source.js?skin=blue" type="text/javascript"></script>
    <script src="http://www.cnblogs.com/JQueryTools/artDialog/plugins/iframeTools.source.js" type="text/javascript"></script>

 首先封装一个通用的Javascript函数

function ShowArtDlg(title, url, width, height, lock)
{
    if (width == null || width == "") {
        width = '90%';
    }
    if (!width.indexOf('px') && !width.indexOf('%')) {
        width = width + 'px';
    }
    if (width.indexOf('px') < 0 && width.indexOf('%') < 0) {
        width = width + 'px';
    }

    if (height == null || height == "") {
        height = '90%'
    }
    if (height.indexOf('px') < 0 && height.indexOf('%') < 0) {
        height = height + 'px';
    }

    if (lock == null || lock == "") {
        lock = false;
    }
    art.dialog.open(url, { height: height, width: width, title: title, lock: lock }, false); //打开子窗体
}

页面里面调用的代码如下所示。

                    <tr align="right">
                        <td>
                            <a href="#" class="easyui-linkbutton" iconcls="icon-edit" id="btnAddUser" onclick="ShowArtDlg('编辑-包含用户', 'EditTree.aspx?type=user&ouid=' + $('#txtID').val(), '360px', '500px')" runat="server">编辑</a>&nbsp;&nbsp;
                            <a href="#" class="easyui-linkbutton" iconcls="icon-remove" id="btnDeleteUser" onclick="deleteUser()" runat="server">移除</a>
                        </td>
                    </tr>

如果你用5.0+的ArtDialog,调整了不支持通过art.dialog.open方式弹出独立Web页面的方式,但还是可以通过以下的方法去弹出独立页面。

art.dialog({title : "选择***",
            cancel : true,
            width : 600,
            padding : '5px',
            content : '<iframe src="test.aspx" id="test" name="test" height="400" width="600" frameborder="0"></iframe>',
            ok : function(){
                ...
            }
        });

 

5、还有一些弹出窗口控件,还支持窗口的最大化操作,这个功能还是不错的。

 

from:http://www.cnblogs.com/wuhuacong/archive/2012/12/02/2797803.html

时间: 2024-08-22 14:10:44

Web开发中的弹出对话框控件介绍的相关文章

JS中artdialog弹出框控件之提交表单思路详解_javascript技巧

artDialog是一个基于javascript编写的对话框组件,它拥有精致的界面与友好的接口. 前言: 自适应内容 artDialog的特殊UI框架能够适应内容变化,甚至连外部程序动态插入的内容它仍然能自适应,因此你不必去考虑消息内容尺寸使用它.它的消息容器甚至能够根据宽度让文本居中或居左对齐--这一切全是XHTML+CSS原生实现. 完善的接口 它的接口完善,可以轻易与外部程序配合使用.如异步写入消息.控制位置.尺寸.显示与隐藏.关闭等. 细致的体验 如果不是在输入状态,它支持Esc快捷键关

求助-C++的lib工程中能弹出对话框吗?

问题描述 C++的lib工程中能弹出对话框吗? 如题,我在一个XX.dll中包含了一个CC.lib,这个lib中的导出接口中能弹出一个对话框吗? 解决方案 当然可以,举例:comctl32.dll 里边包含打开保存对话框. 解决方案二: 当然可以弹出对话框,你封装一个静态库lib,然后实现一个函数内部来跳出对话框就可以了. 解决方案三: 当然可以弹出对话框,你封装一个静态库lib,然后实现一个函数内部来跳出对话框就可以了. 解决方案四: 完全可以啊,直接弹出即可 解决方案五: 谢谢各位的回复,已

js中SweetAlert.js 弹出层控件使用示例

今天给大家分享一个非常漂亮的弹出层控件:SweetAlert.js 首先看效果图: 成功提示:     失败提示:     确认框提示:     在线演示地址: 使用方法 swal("Here's a message!")   参数详解 参数 默认值 描述 title null(required) 窗口的名称.可以通过对象的"title"属性或第一个参数进行传递. text null 窗口的描述.可以通过对象的"text"属性或第二个参数进行传递

Android实现登陆页logo随键盘收放动态伸缩(完美解决键盘弹出遮挡控件的问题)_Android

在最近的两个项目中,项目需求要求我们实现 /*登陆页面的内容能够随着键盘的弹出而被顶上去,避免键盘遮挡住登陆按钮*/ 这样的效果,宝宝心里苦呀,本来半天搞定的事还非得折腾一下,好吧我妥协,毕竟我还是一只非常注重用户体验的猿. 那就做吧,初步定下的方案是输入框和登陆按钮大小不变,在键盘弹出的时候让logo的大小和位置进行改变,从而给键盘腾出位置,当然在键盘收起的时候还要给它还原一下,就像什么都没发生一样,嗯对,就是这样,说了这么多,放张图先感受一下效果吧: 接下来上正餐,布局上比较简单,注意给图片

mfc-MFC 组合框下拉弹出树形控件该怎么实现,自己菜鸟一个

问题描述 MFC 组合框下拉弹出树形控件该怎么实现,自己菜鸟一个 组合框控件和树形控件都能单独实现,就是将两者结合起来不知道怎么弄 解决方案 MFC组合控件的一个小问题 解决方案二: 可以捕获下拉点击事件,然后把树形控件移动过去,显示出来,这样实现简单点 解决方案三: 把树形框放到另外一个无边框窗口里,单击组合框时创建窗口移动过去

设置点击文本框或图片弹出日历控件的实现代码_javascript技巧

<input id="startDate" value="" readonly="true" type="text" style="cursor: pointer" class="user_datepicker "> <input class="canlderImg" data-tag="start" type="ima

Android开发中DatePicker日期与时间控件实例代码

一.简介 二.方法 最日常的使用方法了 日期控件DatePicker 时间控件TimePicker 月份从0开始 三.代码实例 效果图: 代码: fry.Activity01 package fry; import com.example.DatePicherDemo1.R; import android.app.Activity; import android.os.Bundle; import android.widget.DatePicker; import android.widget.

Cocos2d-x中实现弹出对话框示例_C 语言

在游戏中我们经常会看到弹出一个对话框让我们进行选择,今天我们就在cocos2dx中实现这个对话框.对话框说白了也是一个层,当我们点击某一个按钮的时候这个层被加进了当前的场景中,同时场景中的其他的层都是不可点击的,这个时候就涉及到触摸的优先级的一些问题,当然有些时候你也可以根据自己的需要让其他的层也可以点击,但是道理都是一样的,学会了这个其他的按照自己的要求去实现吧.下面我将弹出层单独分装成一个类,供我们调用. /*对话框场景类的头文件*/ #ifndef _POP_SCENE_H_ #defin

jQuery在iframe中无法弹出对话框的解决方法

如果在iframe中使用则弹不出对话框,而有时候我们还必须得使用iframe而不能用jQuery的load方式,下面有个不错的处理方法,希望对大家有所帮助 jQuery的弹出框使用很方便,但是如果在iframe中使用则弹不出对话框,而有时候我们还必须得使用iframe而不能用jQuery的load方式,这个时候就需要处理这个问题. 其实也非常简单,思路就是让iframe的父窗口弹出这个对话框.例如: parent.confirmDialog(); 这样就可以用了.不是什么有技术含量的问题,记下来