序:

  如果单独一个或几个Dialog控件修改成根据浏览器可视界面自动调整高、宽很容易仅仅是一个量变的过程,但如果大量页面都引入了Dialog控件,修改起来是一个很消耗体力的工作。所以接到任务后第一想法就是能不能使在“公共母板页”中设置一处而自动修改继承此母板页的子页面中的Dialog也实现此功能。

0x01:

  有了思路后第一部就是查找EasyUI的API,然后没有发现什么可用的事件。未果。

0x02:

  有时换一种思路便可豁然开朗。EasyUI框架通过插入新的DOM元素而取缔原有的DOM,这个时候便会触发DOM元素的变更事件。所以第一个切入点就是找到事件。很显然“DOMNodeInserted”满足这个需求(PS:缺点就是每变更一个DOM元素都会触发此事件,不知会不会对客户端性能造成多大的影响,但从实验结果来看并没有拖慢Dialog的显示)。

  有了事件后就需要找到触发此事件的“主角”,也就是那个Dialog触发的。通过审核元素可以发现$('.panel.window:visible')此对象便是Dialog,e.currentTarget则是这个Dialog的DOM对象。所以在此事件中判断显示的Dialog是否大于0($('.panel.window:visible').length > 0),如果大于则用当前浏览器可视高,宽大于此Dialog的高、宽则进行设置。设置后还需要对位置进行移动。这些就可以简单批量处理Dialog高度自动调整了。无需每个Dialog单独进行设置了

 $(document).ready(function () {
     $('.panel.window').bind('DOMNodeInserted', function (e) {
         //var vHeight = $(window.parent).height();
         var vHeight = window.innerHeight;
         var vWidth = window.innerWidth;

         if ($('.panel.window:visible').length > 0) {
             var t = $(e.currentTarget).find('.easyui-dialog.panel-body.panel-body-noborder.window-body');
             var vDialogHeight = $('.panel.window:visible').css('height');
             var vDialogWidth = $('.panel.window:visible').css('width');

             vDialogHeight = parseInt(vDialogHeight.replace('px', '')) + 50;
             vDialogWidth = parseInt(vDialogWidth.replace('px', ''));
             /* 如果Dialog高度大于等于当前可视高度,则设置Dialog距离上边距50px */
             if (vHeight <= vDialogHeight) {
                 t.dialog('resize', {
                     height: vHeight - 100
                 });
             }
             /* 如果Dialog宽度大于当前可视宽度,则设置Dialog距离左边距15px否则设置左右居中 */
             if (vWidth <= vDialogWidth) {
                 t.dialog('move', { left: 15 });
             } else {
                 t.dialog('move', { left: (vWidth - vDialogWidth) / 2 });
             }
             /* 设置Dialog垂直居中 */
             t.dialog('move', { top: (vHeight - vDialogHeight + 50) / 2 });
         }
     });
 });

Dialog Code

【JavaScript】EasyUI框架的Dialog控件根据浏览器分辨率自动调节宽高的更多相关文章

  1. xtratabcontrol控件的标签样式--文本的宽高

    Skin skin_ = TabSkins.GetSkin(DevExpress.LookAndFeel.UserLookAndFeel.Default.ActiveLookAndFeel); Ski ...

  2. Lodop打印控件中PRINT_INITA()和PRINT_PAGESIZE()宽高

    Lodop中有两个初始化语句,PRINT_INIT()和PRINT_INITA(),PRINT_INITA()多了四个参数,前两个是整体偏移值,第三四参数是宽高,这个宽高是指打印设计可视化编辑区域的宽 ...

  3. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.6.Dialog控件

    习惯上,我们播放一条简短的信息,或向浏览者询问一个问题,都会用到dialog. 创建一个基本的dialog 使用dialog 选项 形式 启用内置动画 给dialog添加按钮 使用dialog回调函数 ...

  4. 开源框架之TAB控件

    我的开源框架之TAB控件   需求 (1)支持iframe.html.json格式的tab内容远程请求 (2)支持动态添加tab (3)支持远程加载完成监听,支持tab激活事件监听 (4)支持relo ...

  5. easyui中tree型控件不正常显示的处理方法

    我在使用easyui中的tree控件时,出现不正常显示的现象,比如li中不能使用自定义的图标.父级展开或关闭时,其子级仍然显现并出现重叠等.找了很多资料,都没解决这个问题,后来逐个对照官方的源码,才找 ...

  6. 给easyui datebox时间框控件扩展一个清空的实例

    给easyui datebox扩展一个清空的实例 步骤一:拓展插件 /** * 给时间框控件扩展一个清除的按钮 */ $.fn.datebox.defaults.cleanText = '清空'; ( ...

  7. 精通 WPF UI Virtualization (提升 OEA 框架中 TreeGrid 控件的性能)

    原文:精通 WPF UI Virtualization (提升 OEA 框架中 TreeGrid 控件的性能) 本篇博客主要说明如何使用 UI Virtualization(以下简称为 UIV) 来提 ...

  8. zui框架配置日期控件只显示年月

    zui框架配置日期控件datetimepicker只显示年月 <!DOCTYPE html> <head> <script src="~/Scripts/jqu ...

  9. Nova PhoneGap框架 第九章 控件

    我们的框架中也提供了一些常用的控件,这些控件大多都依赖于我们的框架,也正是在我们的框架下才使得实现这些控件的变得更简单.但是我们的框架是不依赖与这些控件的,如果你用不上这些控件,你完全可以把相关的代码 ...

随机推荐

  1. Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

    Java并发编程:CountDownLatch.CyclicBarrier和Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch ...

  2. AFNetworking 3.1

    听说之后AFHttpWorking版本可能会影响到苹果的审核,今天下了最新版本的AFHttpWorking,并且做了简单的封装,我这里是通过cocoapods下载了两个工具 1=AFHttpWorki ...

  3. 2015暑假多校联合---Friends(dfs枚举)

    原题链接 Problem Description There are n people and m pairs of friends. For every pair of friends, they ...

  4. No.017:Letter Combinations of a Phone Number

    问题: Given a digit string, return all possible letter combinations that the number could represent.A ...

  5. 初识React Native,踩坑之旅....

    开启Genymotion Android模拟器后 1.运行“react-native run-android”报端口冲突....解决方法: 2.运行“react-native run-android” ...

  6. ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint......

    今天用Hibernate建立外键的时候发现没有建立 但是创建了这个字段 情景: user表有一字段role,role是role表id字段的外键 原因: user表中已经有记录了,而且有的记录role这 ...

  7. (原) 1.1 Zookeeper单机安装

    本文为原创文章,转载请注明出处,谢谢 zookeeper 单机安装配置 1.安装前准备 linux系统(此文环境为Centos6.5) Zookeeper安装包,官网https://zookeeper ...

  8. bootstrap字体图标在谷歌显示正常,在火狐显示异常的问题

    bootstrap字体图标的使用 现在有很多的网站支持字体图标,我所知道的有bootstrap,fontawesome,iconmoon,等等,可能还有其他我并不知道 bootstrap只要你的文件夹 ...

  9. Select-or-Die:灵活的 jQuery 下拉列表插件

    Select-or-Die 是一个 jQuery 插件,用来自定义下拉列表(Select)元素.原生的下拉选择元素在各个浏览器的默认样式差异很多,而且自定义样式很困难,因此 Web 开发人员喜欢使用插 ...

  10. 分享25个新鲜出炉的 Photoshop 高级教程

    网络上众多优秀的 Photoshop 实例教程是提高 Photoshop 技能的最佳学习途径.今天,我向大家分享25个新鲜出炉的 Photoshop 高级教程,提高你的设计技巧,制作时尚的图片效果.这 ...