不看不知道,一看吓一跳,Atlas中有些Bug还真让人无语。
2016-07-29 00:00
239 查看
阅读了Atlas的代码才发现,Atlas中有些Bug真是让人无话可说。除去以前提到过的有些类成员在重载时奇怪的代码之外,现在在阅读IEDragDropManager时也发现了点有趣的Bug。
按照我的计划,接下来会写一系列文章来讨论浏览器中的Drag & Drop以及深入分析一下在Atlas中Drag & Drop支持代码的行为以及使用与扩展的做法,但是在做阅读和分析Atlas代码之后,发现在IEDragDropManager中有趣的bug。简单的说,大家可以先查看一下在AtlasUIDragDrop.js中,IEDragDropManager类的以下几个方法:
function dragEnterHandler()
function dragLeaveHandler()
function dragOverHandler()
function dropHandler()
在这些方法里都有这样的代码:
this._dropTarget.xxxx
非常有趣的是,this._dropTarget从来没有被赋过值!而被拖动的HTML元素倒有一个_dropTarget,是在registerDropTarget时被赋与的,可惜也从来没有被使用过。很显然,Atlas开发人员把它们混淆了。如果代码被执行到了这里……一个无法避免的Error将被抛出。
不过一般来说,大家在使用时不用担心,因为那些Bug真的很难被触发。首先,那些方法一般在使用时就几乎不太会被执行到,其次如果要执行到这句代码还要通过一个比较特殊的条件判断。要得到一个触发Bug的例子可能的确需要在看过代码之后有针对性地写出。具体的做法我会在接下来的文章中进行解释。有兴趣的朋友可以先尝试一下,比如尝试一下Dflying兄在《使用ASP.NET Atlas实现拖放(Drag & Drop)效果(下)》,上面提到的那些方法,都没有被触发过。不过Atlas中的Drag & Drop模型,依旧是非常完整的一个。
希望以后能有更多的心得体会和大家分享。
按照我的计划,接下来会写一系列文章来讨论浏览器中的Drag & Drop以及深入分析一下在Atlas中Drag & Drop支持代码的行为以及使用与扩展的做法,但是在做阅读和分析Atlas代码之后,发现在IEDragDropManager中有趣的bug。简单的说,大家可以先查看一下在AtlasUIDragDrop.js中,IEDragDropManager类的以下几个方法:
function dragEnterHandler()
function dragLeaveHandler()
function dragOverHandler()
function dropHandler()
在这些方法里都有这样的代码:
this._dropTarget.xxxx
非常有趣的是,this._dropTarget从来没有被赋过值!而被拖动的HTML元素倒有一个_dropTarget,是在registerDropTarget时被赋与的,可惜也从来没有被使用过。很显然,Atlas开发人员把它们混淆了。如果代码被执行到了这里……一个无法避免的Error将被抛出。
不过一般来说,大家在使用时不用担心,因为那些Bug真的很难被触发。首先,那些方法一般在使用时就几乎不太会被执行到,其次如果要执行到这句代码还要通过一个比较特殊的条件判断。要得到一个触发Bug的例子可能的确需要在看过代码之后有针对性地写出。具体的做法我会在接下来的文章中进行解释。有兴趣的朋友可以先尝试一下,比如尝试一下Dflying兄在《使用ASP.NET Atlas实现拖放(Drag & Drop)效果(下)》,上面提到的那些方法,都没有被触发过。不过Atlas中的Drag & Drop模型,依旧是非常完整的一个。
希望以后能有更多的心得体会和大家分享。
相关文章推荐
- 不看不知道,一看吓一跳,Atlas中有些Bug还真让人无语。
- 不看不知道,一看吓一跳,Atlas中有些Bug还真让人无语。
- 2011 年各种平台平板出货量统计(不看不知道,一看吓一跳)
- 不看不知道,一看吓一跳---jQuery官方网站
- 10个咖啡的事实 不看不知道一看吓一跳
- 不看不知道,一看吓一跳(转)
- CSS3选择器~一看吓一跳,这么多不会
- 无语的bug
- 不看不知道——“小废”吓一跳
- 无语的bug
- linux0.11内核fork实现分析(不看不知道,一看很简单)
- Listview中设置了Radiogroup\radiobutton,有些没被选中的item项也被选中的Bug的解决方法
- jsp页面中有些div里面的内容用<!-- -->注释掉了,本以为是多余的,仔细一看还有slice() (上传过程等待效果)
- 无语的bug
- 医院医生和护士都不愿说的医学小常识,不看不知道,一 看吓一跳!
- FTP采用WebClient 方式下载文件夹,下载下来有些文件为0kb,BUG
- 不看不知道,一看吓你dog fuck一跳。Hiberante多种查询方式
- 1 bootstrap table null默认显示为 - 要查源码 2 记一个很无语的bug
- 相当无语的一个bug。又是关于DLL中接口的释放