不看不知道,一看吓一跳,Atlas中有些Bug还真让人无语。
2006-10-06 02:17 Jeffrey Zhao 阅读(2735) 评论(9) 编辑 收藏 举报
阅读了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模型,依旧是非常完整的一个。
希望以后能有更多的心得体会和大家分享。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)