bootbox 使用问题 backdrop无效,无法阻塞,默认获得focus
来源:互联网 发布:烟台软件开发卖 编辑:程序博客网 时间:2024/05/17 10:57
最近boss希望更改掉浏览器默认alert,confirm的提示框,小的我立马按照套路,在网上搜寻到一款使用率较高的bootbox,据说可以替换掉默认alert,confirm。
在后来使用中才发现,这个只有js的bootbox,实际上不过是在简单封装了一下bootstrap中的modal,也就是模态框,帮助我们更简便的搭建,聊胜于无,有了这个,至少能节省不少代码。
1.backdrop
在使用过程中,遇到了几点问题,第一个就是backdrop这个option无效,在注册alert时是可以的,但是在dialog和confirm时就不成功了,具体原因也没有深究,为了实现,点击背景就关闭模态框,没办法,还是回到bootstrap的modal去寻找答案。发现原来backdrop为true,会添加一个蒙层(不知道这么说对不对),而实际实现点击背景就关闭,其实可以在这个蒙层添加一个点击事件就可以
var x=dialog({......});
x.init(function(){$('.modal-backdrop').click(function(){//蒙层的默认类x.modal("hide");//bootstrap modal 的api})});
modal教学 bootstrap modal
2.第二个遇到的问题,就是关于bootbox的阻塞,前面已经说到,其实bootbox的alert,confirm,dialog等,其实就是modal的组建,与原生的alert已经不是同一个概念,原生的alert时稳稳的阻塞,不点击alert的确定,你甭想干别的。
但是目前bootbox,即使你调用init也无法实现阻塞程序进行,立即显示模态框。
所以如果你想完完全全的替代原本的alert,只能通过将后续代码写到回调函数,或者调整模态框显示时机。
但是对于替代原生alert来说,其实是否完全阻塞不是很重要,因为alert只是显示,
可以通过
window.alert=function(msg){var x=bootbox.dialog({......})}这样就可以直接将原有的alert全部替换为bootbox的alert,如果不放心,还可以加上init。
但是对于confirm这种需要返回值,而你有不想一个一个的改写成回调函数(我都乖乖的改写的),想写出一个完全阻塞的替代,目前我只有一个粗鄙的方法
var flag=false,res=false;function sleep(){ setTimeout(function(){ if(flag){flag=false; return res}; else sleep();},1000);}window.confirm=function(msg){ res=false; var x=bootbox.confirm({ callback:function(r){ if(r) flag=true;}});}可以看出,就是无限睡眠,直到用户点击。如果有更高的办法,请联系我
3.第三点就是默认的button类名,可能会默认变为focus,使我们的button的hover颜色,需要去掉focus,就是有额外的鼠标点击或者键盘事件,才能生效。同时focus可能造成误操作,
简单的修改办法,就是自己为button添加类名,就可以覆盖掉原本的类名,自己重写css吧少年,当一个艺术家哟~~
- bootbox 使用问题 backdrop无效,无法阻塞,默认获得focus
- input autofocus focus() 在iphone上无效,无法在手机上默认获取焦点
- ionic --- 在ios无法使用focus,ios focus失效的问题
- 元素获得焦点focus()的问题
- WPF Focus 无法获取焦点问题
- bootbox 使用方式
- Firefox下无法使用.focus()和.select()
- 新加载页面$(window).focus()无效问题的解决
- vmware安装虚拟机出现“无法获得VMCI驱动程序的版本:句柄无效”的问题
- input(输入框)根据id获得焦点(focus)事件无效解决方案
- bootbox
- Focus获得焦点
- 获得Focus与buttonMode
- iOS下无法触发focus事件的问题
- JQuery下focus()无法自动获取焦点的处理方法 jquery如何使文本框获得焦点
- JQuery下focus()无法自动获取焦点的处理方法 jquery如何使文本框获得焦点
- JQuery下focus()无法自动获取焦点的处理方法 jquery如何使文本框获得焦点
- 大数据第一天:vmware安装虚拟机出现“无法获得VMCI驱动程序的版本:句柄无效”的问题
- mybatis 批量添加
- Tian Ji -- The Horse Racing **
- android 性能优化 -- 启动过程 冷启动 热启动
- Servlet学习笔记
- Android System Bar(Status Bar 和Navigation Bar)暗淡效果
- bootbox 使用问题 backdrop无效,无法阻塞,默认获得focus
- filename=new String(filename.getBytes("iso8859-1"),"utf-8") 解决乱码
- Listview多条目加载轮播-适配器写法
- Python Study (04)闭包
- Myeclipse svn 安装使用
- cookie中 maxAge设置为负值 和0的区别
- 神秘
- CSS盒子居中的几种方法
- mysql中文列名和mysql中文列名导致的内连接问题