【JavaScript】EasyUI框架的Dialog控件根据浏览器分辨率自动调节宽高
序:
如果单独一个或几个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控件根据浏览器分辨率自动调节宽高的更多相关文章
- xtratabcontrol控件的标签样式--文本的宽高
Skin skin_ = TabSkins.GetSkin(DevExpress.LookAndFeel.UserLookAndFeel.Default.ActiveLookAndFeel); Ski ...
- Lodop打印控件中PRINT_INITA()和PRINT_PAGESIZE()宽高
Lodop中有两个初始化语句,PRINT_INIT()和PRINT_INITA(),PRINT_INITA()多了四个参数,前两个是整体偏移值,第三四参数是宽高,这个宽高是指打印设计可视化编辑区域的宽 ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.6.Dialog控件
习惯上,我们播放一条简短的信息,或向浏览者询问一个问题,都会用到dialog. 创建一个基本的dialog 使用dialog 选项 形式 启用内置动画 给dialog添加按钮 使用dialog回调函数 ...
- 开源框架之TAB控件
我的开源框架之TAB控件 需求 (1)支持iframe.html.json格式的tab内容远程请求 (2)支持动态添加tab (3)支持远程加载完成监听,支持tab激活事件监听 (4)支持relo ...
- easyui中tree型控件不正常显示的处理方法
我在使用easyui中的tree控件时,出现不正常显示的现象,比如li中不能使用自定义的图标.父级展开或关闭时,其子级仍然显现并出现重叠等.找了很多资料,都没解决这个问题,后来逐个对照官方的源码,才找 ...
- 给easyui datebox时间框控件扩展一个清空的实例
给easyui datebox扩展一个清空的实例 步骤一:拓展插件 /** * 给时间框控件扩展一个清除的按钮 */ $.fn.datebox.defaults.cleanText = '清空'; ( ...
- 精通 WPF UI Virtualization (提升 OEA 框架中 TreeGrid 控件的性能)
原文:精通 WPF UI Virtualization (提升 OEA 框架中 TreeGrid 控件的性能) 本篇博客主要说明如何使用 UI Virtualization(以下简称为 UIV) 来提 ...
- zui框架配置日期控件只显示年月
zui框架配置日期控件datetimepicker只显示年月 <!DOCTYPE html> <head> <script src="~/Scripts/jqu ...
- Nova PhoneGap框架 第九章 控件
我们的框架中也提供了一些常用的控件,这些控件大多都依赖于我们的框架,也正是在我们的框架下才使得实现这些控件的变得更简单.但是我们的框架是不依赖与这些控件的,如果你用不上这些控件,你完全可以把相关的代码 ...
随机推荐
- Visual Studio统计代码行数
按[Ctrl+Shift+F]弹出查找窗口(不统计以#号开头.以/开头的代码和空行) 1.输入 :b*[^:b#/]+.*$ 2.选择使用正则表达式 3.查找文件类型,*.cs多种类型用分号(;)隔 ...
- PowerDesigner中Table视图怎样同时显示Code和Name
1.创建一个简单table视图步骤: 1)打开软件,创建model,选择Physical Data
- 基于TCP和多线程实现无线鼠标键盘-Socket(1)
把手机作为移动鼠标.键盘使用非常方便,本文将实现这一功能.该应用分为两部分:Windows服务端和Android客户端. 本文源代码的下载地址:http://download.csdn.net/det ...
- WebView的使用及添加进度条
实现的效果比较简单类似于微信打开网页,头部有个进度条显示加载进度 下载地址:http://download.csdn.net/detail/qq_29774291/9666941 1.在安卓端加载一个 ...
- HDU 5792---2016暑假多校联合---World is Exploding
2016暑假多校联合---World is Exploding Problem Description Given a sequence A with length n,count how many ...
- 为mongodb数据库添加安全账户
最近的数据库服务器有些不稳定,遇到了黑客的骚扰,mongodb的安全存在一些漏洞.首要任务是给数据库添加账号.之前大家都习惯于mongodb的不加安全账号和密码来连接数据库,那么问题是添加了安全账户后 ...
- Linux CentOS 6.6安装JDK1.7
Linux CentOS 6.6安装JDK1.7 目录 1.下载JDK 2.卸载JDK 3.安装JDK 3.1..rpm后缀格式JDK安装方式 3.2..tar.gz后缀格式JDK安装方式 4.验证安 ...
- [小北De编程手记] : Lesson 06 玩转 xUnit.Net 之 定义自己的FactAttribute
xUnit.Net本身提供了标记测试方法的标签Fact和Theory.在前面的文章<Lesson 02 玩转 xUnit.Net 之 基本UnitTest & 数据驱动>中,也对它 ...
- EF+MySQL乐观锁控制电商并发下单扣减库存,在高并发下的问题
下订单减库存的方式 现在,连农村的大姐都会用手机上淘宝购物了,相信电商对大家已经非常熟悉了,如果熟悉电商开发的同学,就知道在买家下单购买商品的时候,是需要扣减库存的,当然有2种扣减库存的方式, 一种是 ...
- JSESSIONID与SESSION
用spring security的时候遇到了一个很诡异的问题: 已经登录的用户,而且没有标记remember-me,在重启服务器之后还会显示已经登录状态 这就严重啦,这样子如果要在session中储存 ...