精华帖 (3) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (10)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-01
已修复网友提到的ie6下的相关问题
同时取消了闪烁提示功能 在支持了ie6半透明情况下 同时支持闪烁的话 在ie7+上绿色部分将变灰 考虑将闪烁提示修改成声音提示 |
|
返回顶楼 | |
发表时间:2010-05-03
最后修改:2010-05-03
首先感谢lz的无私分享。
我自己也写了个类似的东西在项目中使用,遇到一些问题,想跟lz讨论下,看看lz的组件是不是已经解决了。 其实这个东西的实现还是很简单的,我的做法是 div+iframe,这样可以做到遮盖iframe和select。在跨框架的问题上,我的做法是在window.top上实例化该js类,然后在自己的框架类上定义一个方法: var xajax = {}; xajax.alert = function( text ) { if( window.top.dialogObject ) window.top.dialogObject.alert( text ); else alert( text ) ; }; 上面的代码很简单,就是所有需要alert的地方都调用xajax.alert,该方法自行判断顶层dialog组件是否可用,如果可用就调用dialog组件的alert方法,如果不可用,就调用window.alert方法。 实现上不难,难点在于模拟alert、confirm的阻塞行为,比如一段js验证失败的代码,我们要求提示信息之后自动把焦点置到验证失败的输入框上 传统写法: if( username.getValue() == "" ) { alert( pageLocale.validate.username.failed ) ; username.focus() ; }; 如果用自己写的dialog组件,alert的时候显然是不能阻塞的。我目前的做法加了一个回调方法来做相同的事 xajax.alert = function( text, callback ) { .... }; if( username.getValue() == "" ) { xajax.alert( pageLocale.validate.username.failed, function() { username.focus(); } ); }; 但是总觉得这种方式很丑陋而且问题很大
不知道lz是不是也考虑过这种情况,是怎么解决的。 |
|
返回顶楼 | |
发表时间:2010-05-03
最后修改:2010-05-03
plusir 写道 首先感谢lz的无私分享。
我自己也写了个类似的东西在项目中使用,遇到一些问题,想跟lz讨论下,看看lz的组件是不是已经解决了。 其实这个东西的实现还是很简单的,我的做法是 div+iframe,这样可以做到遮盖iframe和select。在跨框架的问题上,我的做法是在window.top上实例化该js类,然后在自己的框架类上定义一个方法: var xajax = {}; xajax.alert = function( text ) { if( window.top.dialogObject ) window.top.dialogObject.alert( text ); else alert( text ) ; }; 上面的代码很简单,就是所有需要alert的地方都调用xajax.alert,该方法自行判断顶层dialog组件是否可用,如果可用就调用dialog组件的alert方法,如果不可用,就调用window.alert方法。 实现上不难,难点在于模拟alert、confirm的阻塞行为,比如一段js验证失败的代码,我们要求提示信息之后自动把焦点置到验证失败的输入框上 传统写法: if( username.getValue() == "" ) { alert( pageLocale.validate.username.failed ) ; username.focus() ; }; 如果用自己写的dialog组件,alert的时候显然是不能阻塞的。我目前的做法加了一个回调方法来做相同的事 xajax.alert = function( text, callback ) { .... }; if( username.getValue() == "" ) { xajax.alert( pageLocale.validate.username.failed, function() { username.focus(); } ); }; 但是总觉得这种方式很丑陋而且问题很大
不知道lz是不是也考虑过这种情况,是怎么解决的。 单纯实现解释执行(实现alert confirm的阻塞执行是很困难的 几乎无法实现) 模拟confirm目前都是这样做的 confirm一个确定 一个取消按钮 分别给他们绑定回调函数 来实现 自定义弹出层无法实现阻塞执行 虽然能做出来 但几乎无法封装好 比如 alert("abc");alert("der");将同时弹出两个alert对话框而不是确定之后再弹出另外一个 MC Dialog是将层创建到最顶级window对象dom中的 MC Dialog 是将系统自带的alert confirm方法覆盖了的 alert方法你只需要像以前一样调用即可 confirm方法必须带有至少一个参数 调用如confirm('你确定?',function(){//确定按钮方法},function(){//取消按钮方法}) //第二个第三个方法是不必须的 但是不带的话是同alert没有多大去别的 实际中还是要用 MC Dialog 已更新了 你可以看看代码 对你有帮助的话就最好了 也希望多多交流共同进步 |
|
返回顶楼 | |
发表时间:2010-05-04
弹出的窗口关都关不掉
|
|
返回顶楼 | |
发表时间:2010-05-05
kenchen0805 写道 弹出的窗口关都关不掉
不知道是什么浏览器? 貌似就没有浏览器会有关不掉这种情况 肯定是有什么脚本错误 但是我可以肯定的告诉你在我的演示界面 是没有问题的 5.1前演示页面在ff下有的问题但都不是MC Dialog本身的问题 |
|
返回顶楼 | |
发表时间:2010-05-06
MC Dialog再次更新 修正拖拽在ff下的延迟和闪烁问题 请大家下载最新版
如果绝对开始的拖拽比较好的话 就不用更新了 |
|
返回顶楼 | |
发表时间:2010-05-07
好像在IE8下面有内存泄露的问题,我每次往红色区域移动一下弹出一个框的时候内存基本上就得增加10M左右。第一次的时候没发现这个问题,结果我IE的内存就占到300M了。不知道是什么问题。
|
|
返回顶楼 | |
发表时间:2010-05-07
更新了一下结果直接用IE8打开就报脚本错误。
|
|
返回顶楼 | |
发表时间:2010-05-07
行: 81
错误: 'Dialog.Stock' 为空或不是对象 |
|
返回顶楼 | |
发表时间:2010-05-07
bluesky4485 写道 行: 81 错误: 'Dialog.Stock' 为空或不是对象 对我也看了一下在ie8下确实有内存泄露的问题 这可能是新的拖拽方法造成的 因为最开始的拖拽放我测试过 内存占用在3m左右 每次关闭后内存会后在一半左右 更新?是你自己修改过? 如果你修改了我不敢保证 没有修改的话 是不会出现脚本错误的 这个我到目前为止运行正常 为出现脚步错误 |
|
返回顶楼 | |