LZ前段时间做了一个新项目,在新要求中,新增,编辑这些页面不能嵌在页面里,需要使用悬浮的弹出框插件,由于网站风格的原因,弹出框的样式等都是美工设计好的,项目经理有意让LZ封装一个内部使用的弹出框插件出来,做到通用可配置,避免代码重复率,且便于维护。
说实话,LZ以前确实接触过不少js插件,比如codemirror,kindediter,柱状图,折线图。。。而且自己也尝试修改过不少前辈们留下来的js控件,但是自己封装插件倒是头一回,但是需求很明确,经理对我如此信任,LZ硬着头皮也要把他搞出来。
说到js插件,很重要的一点就是可配置,数据的来源怎么处理,很容易的想到了ajax,把请求数据的url作为参数传递给控件,利用ajax请求数据,再渲染到弹出层的html元素中,从而实现弹出效果。由于每个渲染的页面都是独立可单独编写的页面代码,涉及大量内嵌的js代码,ajax将整个html页面拼接给摸个dom元素的时候,不时出现不兼容的现象,很容易出现js不生效的问题,因此做了大量的测试后,LZ最终放弃了这个方案,改为利用iframe加载新页面,总体来说,iframe在加载新页面方面十分方便高效,js不生效的问题迎刃而解。
由于历史遗留原因,LZ项目组的页面代码也大量使用了iframe加载新页面,这给弹出框的弹出位置带来了不小的麻烦,为此,LZ专门为其增加了一个container参数,默认为当前window,根据弹出框所要展示的层次位置,灵活进行控制。
弹出框会存在内容大小的问题,LZ起先想利用内部页面的长宽计算外部iframe的大小,再根据此计算弹出框居中的位置,但在其他同事使用,以及自己测试后,发现此种方案有不合理的地方。因为内部页面千遍万化,很多已经调整好的css样式或者html标签,会导致自动撑开iframe的过程中出现误差,导致页面不美观的行为,需要调整内部页面css才可以解决(LZ尝试iframe的load事件加载完成后计算其宽高也没有完美解决该问题)。最后LZ为插件设置了with和height属性,由使用者自行调整页面大小,实践证明,同事们在使用的过程中调整所费时间和成本还是很少的,几次调整之后基本都达到了满意的效果。
当然了,大多数的弹出框都是带有可移动的功能,这个也需要考虑到,再多加一个isMove属性,当然要绑定keyup,keydown事件了,具体内容可查看附件代码,在此不做赘述。由于项目中弹出框主要目的是用于新增和编辑功能,所以按钮只有一个,lz也为是否需要按钮加了条件isSaveButton,按钮文字可配置saveBtnTitle。点击保存时,需要调用内部页面的js函数,需要提供访问内部iframe方法的参数,做到控件可控制的winFuncs。当然,点击保存和点击关闭弹出框的按钮添加了回调函数,方便后续处理,为了更加人性话,irame加载页面的过程中也增加了加载中。。。的滚动条设计。
做完整个插件,从渲染到绑定事件,代码区区百行,但是很多设计的苦恼和调试的辛苦只有LZ本人知道,很多参数的设计都是来源于实际使用经验,尽管还有很多不足之处,但总归是个可以使用的js小插件,特此与大家分享。
使用样例如下:
var Win = new WinBox({ container:window.parent, url: 'xx.action', width:900, height:400, title:'编辑', isSaveButton:true, isMove:true, saveWin:function(){ Win.winFuncs.save(); }, closeWin:function(){ } });
相关推荐
弹出无边小窗口插件.mxp 弹出注释插件.mxp 导出EXEL格式插件.mxp 导出WORD插件.mxp 地址栏图标插件.mxp 调用CSS文件插件.mxp 动态替换CSS插件.mxp 多词搜索插件.mxp 二级下拉菜单插件.mxp 高级HTML编辑器2.01版.mxp ...
在WordPress插件中,Facebox可能被用来创建一个优雅的下载框,当用户点击某个链接时,会以弹出窗口的形式展示下载选项。 总的来说,这个压缩包提供的内容涵盖了WordPress插件的安装、使用和功能演示,对于想要增强...
calendarPopup 一个弹出日历表格,用以确保输入的日历是按照特定的格式进行输入的,主要特色包括:日历链接,按照需要的方式设定日历的格式,按照需要可以在日期项目间增加分隔符等等功能 MX95982_shortcutIconOB_v1...
例如,如果用户有权限添加新的城市,可以弹出一个表单,用户填写后,将新城市作为选项插入到对应的下拉框中。 总结来说,`CascadingDropDown`自制的操作下拉列表框结合了jQuery的事件处理和AJAX的异步特性,为用户...
一个弹出日历表格,用以确保输入的日历是按照特定的格式进行输入的,主要特色包括:日历链接,按照需要的方式设定日历的格式,按照需要可以在日期项目间增加分隔符等等功能 MX95982_shortcutIconOB_v1 插入.icon图标...
代码如下:(function($) { var defaults = { bugColor: ‘#FFCCCC’, //数据有误的时候文本框颜色 color: ‘white’, //数据正确时候文本框颜色 type: “alert”, //数据错误时候提示方式 alert 弹出框方式 text ...
此保护器会保护MBR(磁盘扇区),防止恶意软件修改,如果是您自己主动操作,还可以在弹出的是否拦截提示框中选择“否”以允许。 此源码调用无名模块,如需要请去以前我上传的的无名模块资源里下载。 想要就赶紧下载...
同时,Bootstrap还提供了JavaScript插件,如模态框(Modal)、滚动spy(Scrollspy)和轮播(Carousel),这些功能可以通过简单的数据属性或JavaScript调用启用。 构建一个Bootstrap响应式网站的基本步骤如下: 1. ...
- `trigger`: 自定义弹出控件的触发事件,如'click'。 - `show`: 是否默认显示控件,类型为布尔值。 - `position`: 控件的位置,可以是'fixed', 'absolute', 或 'static'。 - `zIndex`: 层叠顺序,用于解决与...
jQuery Alerts是一种基于jQuery的插件,它允许开发者自定义弹出警告、确认和信息对话框的样式、布局以及功能。通过引入“jquery.alerts.css”和“jquery.alerts.js”,我们可以创建具有个性化外观和交互效果的对话框...
- **个性化设计**:自制或定制图片更能体现网站特色。 ### 知识点六:网站文件结构与管理 #### 文件分类: - **HTML文件**:构成网站的主要内容页面。 - **CSS文件**:存放样式规则。 - **JS文件**:存放脚本代码...
对于撤销/重做功能,我们可以使用栈数据结构保存每次绘图操作,当用户触发撤销或重做时,就从栈中弹出或推入绘图操作。 **七、保存与加载绘图** 为了保存用户的绘图,我们可以将所有的绘图路径序列化为XML或JSON...
- **4.26 离开与关闭程序的弹出窗口——对话窗口上的ICON图标** 介绍了如何在退出或关闭程序时显示带有图标的消息框,提高用户友好性。 #### 第5章:交互式通信服务与手机控制 - **5.1 具有正则表达式的TextView...