解决jqueryeasyUI dialog 弹出窗口超出浏览器,导致不能关闭的bug

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

使用panel的onMove事件解决了panel,dialog以及window组件在被拖动时,会超出浏览器边界而无法拖回的情况。

当窗口被拖出浏览器有边界时,$(document).width();会增大,增大的部分就是窗口超过浏览器窗口的部分,所以right > browserWidth条件永远无法满足。

如果我们在思考得多一点,其实对于panel,dialog,window三个组件,我们往往要求的并不是它不能超出浏览器界限,而是要求它不能超出父元素界限,而且当父元素的overflow不是hidden的时候,应该允许组件超出父元素右下侧,个人觉得这样更合理。

真的这个bug,所以最终的代码改为以下形式较为合理:



/**

 * add by cgh

 * 针对panel window dialog三个组件拖动时会超出父级元素的修正

 * 如果父级元素的overflow属性为hidden,则修复上下左右个方向

 * 如果父级元素的overflow属性为非hidden,则只修复上左两个方向

 * @param left

 * @param top

 * @returns

 */

var easyuiPanelOnMove = function(left, top) {
var parentObj = $(this).panel('panel').parent();
if (left < 0) {
$(this).window('move', {
left : 1
});
}
if (top < 0) {
$(this).window('move', {
top : 1
});
}
var width = $(this).panel('options').width;
var height = $(this).panel('options').height;
var right = left + width;
var buttom = top + height;
var parentWidth = parentObj.width();
var parentHeight = parentObj.height();
if(parentObj.css("overflow")=="hidden"){
if(left > parentWidth-width){
$(this).window('move', {
"left":parentWidth-width
});
}
if(top > parentHeight-height){
$(this).window('move', {
"top":parentHeight-height
});
}
}
};
$.fn.panel.defaults.onMove = easyuiPanelOnMove;
$.fn.window.defaults.onMove = easyuiPanelOnMove;
$.fn.dialog.defaults.onMove = easyuiPanelOnMove;

将js代码保存为js文件,在jquery.easyui.min.js之后引入你保存的js文件即可。


百度博客搬家:源地址:http://hi.baidu.com/confidence68/item/0f10ab18ad5a96c638cb304c

jquery弹窗组件修改(踩坑记录) 目录一、$.confirm()确定及取消操作没反应二、修改$.confirm样式三级目录 一、$.confirm()确定及取消操作没反应 二、修改$.confirm样式 三级目录         事情是这样se儿的,之前用vue打包好的项目被嫌弃占内存偏大,要求用原生js重新编写页面,然后就开启了与jq斗智斗勇的过程。其中,用到与el-ui中this.$confirm与this.$notify相似的弹框组件,下面放两张图感受一 阅读详情

相关推荐

解决按esc键同时关闭了el-dialog弹窗和el-image的问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 解决按esc键同时关闭了el-dialog弹窗和el-image的问题前言业务需求:出现的问题:一、解决el-image被编辑框遮挡的问题解决:总结 前言 业务需求: 后台系统打开编辑框,又打开el-image预览框,要将el-image框显示在编辑框之上,按下esc键后,先关闭el-image框,再关闭编辑框 出现的问题: 1.el-image框被编辑框遮挡 2.按下esc键后,编辑框和大图都被关闭了 ps:没法截图演示bug --

FTEzreal的博客 4453

解决jqueryeasyUI dialog 弹出窗口超出浏览器导致不能关闭bug[百度博客搬家]

使用panel的onMove事件解决了panel,dialog以及window组件在被拖动时,会超出浏览器边界而无法拖回的情况。 当窗口被拖出浏览器有边界时,$(document).width();会增大,增大的部分就是窗口超过浏览器窗口的部分,所以right > browserWidth条件永远无法满足。 如果我们在思考得多一点,其实对于panel,dialog,window

confidence68的专栏 1107

jQuery对话框Dialog弹出层插件演示与使用说明

jQuery对话框Dialog弹出层插件演示与使用说明

jquery easyui中的dialog拖动超出浏览器问题解决办法

juqery easyui当鼠标点着拖动超出浏览器后,就回不来了,拉不下的问题: //控制dialog超出浏览器回到原来的地方 var default_left; var default_top;//dialog弹出框距离浏览器右侧位置 function onopen(){   //取到dialog的位置   default_left=$('#wow-goods-add').pane...

weixin_30852451的博客 261

react中用JavaScript防止弹出超出浏览器边界

目录使用场景对齐防止超出边界获取数据 使用场景 fixed的侧边栏按钮点击弹出的fixed弹框,与该按钮的中点水平对齐;如果会超出屏幕上下边界,则会往里偏移使其不超出边界。react实现。 对齐 侧边栏按钮里放个高度为1的居中的线,然后线里再flex放窗口内容,就能实现窗口与按钮的中点水平居中 right: 90px; position: absolute; z-index: 1500; height: 1px; cursor: auto; .arrow-window__inner{ display:

逗题博客 1435

jqueryeasyUI dialog 弹出窗口超出浏览器导致不能关闭bug解决方案

jqueryeasyUI dialog 弹出窗口超出浏览器导致不能关闭bug解决方案 2014年8月30日3233次浏览 相信很多前端朋友都用过jqueryeasyUI,jqueryeasyUI功能很强大,可以实现我们前端很多想要的效果,例如,下拉树也就是select tree等。但是jqueryeasyUI底层构建不是很好,简单的应用还可以,深入开发的话,还是推荐用extjs相对好...

weixin_30885111的博客 259

解决jqueryeasyUI dialog 弹出窗体超出浏览器导致不能关闭bug

使用panel的onMove事件攻克了panel,dialog以及window组件在被拖动时,会超出浏览器边界而无法拖回的情况。 当窗体被拖出浏览器有边界时。$(document).width();会增大,增大的部分就是窗体超过浏览器窗体的部分,所以right > browserWidth条件...

weixin_30455023的博客 282

jQuery EasyUI 1.3 新特性

jQuery EasyUI 1.3 新特性 修复BUG:     combogrid : 当设置为‘remote’查询模式时,‘queryParams’参数不能被发送到服务器端.  已修复          combotree : 下拉面板中的树节点,在调用‘clear’方法的时候,不能被uncheck.  已修复     datetimebox : 把‘showSeco

3141

jQuery easyui中dialog弹出框隐藏

Open Close The dialog content. $(document).ready(function(){ $(".window").css("display","none"); $(".window-shadow").css("display","none"); }); 如上代码,jquery.easy

zpcsgo的博客 7924

jQuery-EasyUI学习(十四)Dialog(对话框窗口

一、Dialog(对话框窗口)           该对话框是一种特殊类型的窗口,它在顶部有一个工具栏,在底部有一个按钮栏。对话框窗口右上角只有一个关闭按钮用户可以配置对话框的行为显示其他工具,如collapsible,minimizable,maximizable工具等。 二、例子 &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Trans...

quge_name_harder的博客 734

Jquery UI dialog 弹层被遮住的问题

我有一个页面,只有一个iframe,这个iframe里面放的是flash,如下图 弹层后,如下图 怎么让弹出的层在最上边,我用的是Jquery UI 中的dialog来弹层的 .ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0; z-index: 1000 !important; }在css文件

lijunlinlijunlin的专栏 3268

jquery控制层不超出屏幕范围

$(document).ready(function(){ var _lll= $(window).width(); var _mmm = 0; $(".valuation li img").mouseover(function(e){ titles=$(this).attr("title"); $(this).att...

dianbogui8494的博客 181

easyui的dialog的width或者height超出父容器报错的问题

easyui的dialog的width或者height超出父容器会报: Uncaught RangeError: Maximum call stack size exceeded的错误 可以在dialog的onMove事件中加入以下方法 $('#exp').dialog({ onMove: function() { var parentObj = $(this).panel('p

baitianbianhei的博客 805

jQuery EasyUI window拖动超出浏览器边界问题修正

jQuery EasyUI window拖动超出浏览器边界问题修正 在ouMove中添加相应代码,当超出范围时窗口保持在浏览器边缘不再移动。 实际使用的时候,窗口可能会被拖拽到浏览器窗口的位置,文章在初始化window对窗口的位置进行限制,当拖拽窗口位置超出浏览器边缘时,窗口会停留在浏览器边缘位置禁止继续拖动,代码示例如下

卡萨布兰卡的博客 4178

Jquer dialog 弹出窗口实例

页面中加入 &lt;link href="jquery.ui.theme.css" rel="stylesheet" type="text/css" OLDSRC="jquery.ui.theme.css" /&gt; &lt;script type="text/javascript" src="jquery-1.6.2.min.js" OLDSRC=&quot

IT 313

JQuery弹出窗口,遮蔽窗口

RWC趋势下,我多采用Jquery框架完成一些效果,有些可以自己写,更多情况都可以用网上现有的。 例如JQuery弹出窗口,遮蔽窗口,大概罗列一下,需要我满足我几个条件 一定要简洁方便 拥有遮蔽功能,Model Dialog ,所谓的模态窗口 可以根据HTML弹出窗口 可以定义弹出窗口的位置,大小 其实我只需要一个框,我更希望框的内容我自己控制,...

runus 313

jquery dialog-优雅的弹出

前面一章已经对datepicker的使用,做了简单的说明。这一章主要对dialog如何使用做个说明。 jquery ui-dialog在web开发中运用还是比较多的。最常见的例子就是登录功能的实现。运用dialog的好处就是不用刷新网页,直接弹出一个div层,让用户输入信息。使用起来也比较方便。下面就学学如何使用它吧。 前提条件 ...

aichuxia4449的博客 1938

Jquery easyUI dialog的close和destroy

之前在用easyUI的时候遇到一个问题,一直困扰着我。问题:使用dialog来实现保存和编辑框,使用dialog.(“close”)来关闭dialog框,这个时候如果有两个页面的保存页面的表单的字段相同时,这两个表单的东西就会混乱。要不就是保存时打不开,要不就是编辑页面打开数据初始化不了。解决思路:使用close的方法来关闭dialog时,此dialog并不是完全消失,只是隐藏起来了而已。当另一个

貌似君子的专栏 7万+
上一篇: jQuery窗口、文档各种高度的理解
下一篇: X-UA-Compatible IE 浏览器默认文档模式设置
confidence68
博客等级 码龄15年 37粉丝 61原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值