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、还有一些弹出窗口控件,还支持窗口的最大化操作,这个功能还是不错的。

本文转自博客园伍华聪的博客,原文链接:Web开发中的弹出对话框控件介绍,如需转载请自行联系原博主。



目录
相关文章
|
1月前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
2月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
232 45
|
2月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
43 7
|
2月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
2月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
52 2
|
2月前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
68 1
|
2月前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
2月前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
85 2
WK
|
2月前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
142 0
|
2月前
|
JavaScript 前端开发 Java
SpringBoot_web开发-webjars&静态资源映射规则
https://www.91chuli.com/ 举例:jquery前端框架
29 0