注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 WEB3.0来了,能知道100米..
 帮助

不看不知道,一看吓一跳,Atlas中有些Bug还真让人无语。


2006-10-06 02:17:11
 标签:Bug Atlas   [推送到技术圈]

版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
  阅读了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模型,依旧是非常完整的一个。

  希望以后能有更多的心得体会和大家分享。

本文出自 “赵劼” 博客,转载请与作者联系!





    文章评论
 
 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: