- 浏览: 842811 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (530)
- Java编程 (64)
- C/C++/D (6)
- .Net/C# (9)
- Ruby (12)
- JavaScript (77)
- XML (1)
- JSON (1)
- Ajax (17)
- ExtJs (81)
- YUI (1)
- JQuery (7)
- DWR (1)
- HTML (7)
- CSS (7)
- Database (6)
- PowerDesigner (23)
- DB2 (2)
- Oracle (57)
- MS SQL Server (8)
- MySQL (6)
- JSP/Servlet/JSTL/TagLib (3)
- Spring (1)
- Hibernate (0)
- iText (0)
- Struts (0)
- Struts2 (0)
- iReport (0)
- FreeMarker (0)
- HttpClient (1)
- POI (6)
- FckEditor (15)
- Eclipse / MyEclipse (10)
- IntelliJ IDEA (0)
- NetBeans (0)
- Tomcat (11)
- WebLogic (1)
- Jboss (3)
- jetty (4)
- IIS (2)
- CVS/VSS (1)
- FTP (1)
- Windows/DOS (6)
- Linux/Unix (0)
- 软件建模 UML (0)
- Design Pattern & Thinking In Programming (10)
- 数据结构与算法 (12)
- 软件项目管理 (9)
- 行业应用解决方案 (3)
- 电脑软件与故障解决 (13)
- 编程语言 (1)
- 十万个为什么 (3)
- JBPM (2)
- sysbase (2)
- JDBC (8)
- Ant (2)
- Case-计算机辅助软件工程 (1)
- WebService (4)
- 浏览器 (1)
最新评论
-
gaoqiangjava:
同一楼,还请大手帮解决
JAVA读取word文件 -
hyl523:
// 判断数组中的第一个值是否未定义,如果未定义,便定义为空对 ...
javascript面向对象之二 命名空间 -
ping12132200:
ping12132200 写道我抱着个错不是因为:body标签 ...
extjs在IE报对象不支持此属性或方法 -
ping12132200:
我抱着个错不是因为:body标签内的第一个元素不能为文本tex ...
extjs在IE报对象不支持此属性或方法 -
fireinjava:
呀,不错,转走了,谢谢啦~
利用OpenOffice将word转换成PDF
Element.js这个文件包含了整个extjs框架中最为核心的部分,它对DOM元素进行超强的封装。源文件就有3054行,尽管这中间有好多是注释,但是,在个把月前,我不敢想像我会要拿着几千行的js文件来研究。呵呵。
就我目前而得知的情报,Ext.Element类至少包含如下功能:
一、为许多DOM动作创建Animation(动画),例如setWidth,它提供一个可选项来获得动画效果
二、提供一个伟大的load方法,可以直接ele.load({url:xxxxx}的方式来异步加载数据。超爽、超酷啊。
其他功能我目前不知,这是看了别人的教程有了这样一个大概的映像。如果要对它获得一个大概映像,点此处访问相关资源!通过这个资源,几乎就可以动手写程序了。
废话就不多讲了,还是来研究研究源代码。
一、Ext.Element的缓存机制
Ext.Element = function(element, forceNew){
var dom = typeof element == "string" ?
document.getElementById(element) : element;
if(!dom){ // invalid id/element
return null;
}
var id = dom.id;
if(forceNew !== true && id && Ext.Element.cache[id]){ // element object already exists
return Ext.Element.cache[id];
}
this.dom = dom;
this.id = id || Ext.id(dom);
};
Ext.Element提供了缓存机制,作用:提高性能;原理:让构造过Ext.Element存放在json对象中,如果要再次获得这个对象就不用再次构造,只需从缓存中取出即可。原理很简单。
上面函数是Ext.Element的构造函数,其中forceNew表示是否强制创建一个新对象,不管缓存中是否已存在。这个构造函数还强制为元素生成id。
缓存定义在哪?在代码的最后面有一行代码:El.cache = {};可见,缓存是全局的。这是必然。再看看大伙平常用得最多的函数。Ext.Element.get。这个函数都有四十几行的代码,因为整个函数考虑到可能传入参数的类型有好几种的情况,情况多起来,所以有点多。
二、Ext.fly倒底有什么用?
Ext.Element有一静态成员fly。它也是获得一个Ext.Flyweight对象的实例。当然,它也是对元素的包装,请见代码:
var flyFn = function(){};
flyFn.prototype = El.prototype;
var _cls = new flyFn();
// dom is optional
El.Flyweight = function(dom){
this.dom = dom;
};
El.Flyweight.prototype = _cls;
El.Flyweight.prototype.isFlyweight = true;
看清代码了吧?可以说,Flyweight是继承自Element的。不过,正如其名,它是轻量级的。为什么这么说呢?见fly的代码:
El.fly = function(el, named){
named = named || '_global';
el = Ext.getDom(el);
if(!el){
return null;
}
if(!El._flyweights[named]){
El._flyweights[named] = new El.Flyweight();
}
El._flyweights[named].dom = el;
return El._flyweights[named];
};
这个代码的关键是,它总是会取得同一个Flyweight对象,用fly取的时候,只要没有传named,所有取的对象都同一个,换的只是dom罢了。
有人问这有什么好处?好处大了,如果有1000个元素,要调用它们的hide隐藏,如果用Ext.get的话,就会创建1000个Element对象,如果用fly,那只会创建一个对象。这对性能带来巨的提升。所以,在有一些批量式的操作时,用fly要好一些。
三、对Element.findParent、Element.findParentNode的质疑!!
原来如此,本来以为它是寻找的对象不包括自己,我总以为没有得到结果,原来,这两个函数是从自己找起的,如果一个元素是div,如果它用findParent找div祖先的话,那找的总是自己。
这个问题是解决了,不过,我对findParent的代码有疑问,它里面用Ext.getDom(maxDepth)来获得最极限层次的那个节点,事实上,我把getDom传数字的话只会返回数字本身,根本不会返回元素。这个问题我一直想不通。不过,这并不会影响表面上的功能。只是设 maxDepth相当于白设了。
四、Element的动画支持
Element要使用动画有三大类方法。
直接调用Ext.Element的animate函数,它建立于Ext.lib.Anim类的基础之上,而Ext.lib.Anim是Adapter里面的类。
在调用Ext.Element的一些设置大小、位置、范围、透时度时,那些函数往往有一个参数,anim,设一设它,也能获得动画效果。
调用从Ext.Fx类中继承过来的方法,如果页面包含了Ext.Fx,那么就可以用所有在Ext.Fx中定义过的函数了。
一般多用后面两种方法。出人意料的是,Ext.Element继承了Ext.Fx。代码上反应在哪里呢,在Ext.Fx的最后面,有这样一行代码:Ext.apply(Ext.Element.prototype, Ext.Fx);这样一来,在Element中就可放心地使用特效了。关于对Element使用动画,这个现在不是研究重点,这个Ext.Fx要研究的内容。在此一笔带过,实在急于这个问题的,可以点此处阅读相关参考资料!
五、设置位置、大小、绝对位置、相对位置等等于关定位、范围的函数
这是个大问题,事实上,前一周我重点就在搞这个问题,例如:
如何取得相对于定位容器的坐标
如可取得相对于页面文档的坐标
如何取得元素的大小,包括边框、内边距、实际内容
如何取得相对于元素的坐标(偏移量)
如何取得视口大小
如何取得当前文档水平滚动、垂直滚动的距离
如何取得当前元素相对于视口左上角的坐标
问题多吧。这些问题在平常计算时多要用到这些量,然而这些量与浏览器类型严重相关。不同浏览器取法不一样。麻烦、头痛啦。还好,这个问题 Ext.Element都对此进行了封装。不用我们烦心了。当然,上面还仅仅是取得,还有设置这些量的问题,这就至少十五、六个函数了。 Ext.Element又是英文文档,给我们的理解造成了困难呐。下面来把这些东西找出来。到了这里,我再次想起asp.net ajax,这个东西现在与extJs比起来屁都不是啊。在asp.net ajax中,就封装一丁点的东西,它里面的DomElement相当于Element了,只是功能完全不能比,就只有create、addClass、 removeClass、toggleClass,关于我上面提出的七个问题,一个都没有解决。这个框架有跟没有一样。如果有兄弟正在用asp.net ajax,最好还是换一换,换谁都不要用asp.net ajax啊。
关于这个问题,我一并交到下一文中,下一篇中主要是把Ext.Element中的API归类,比如要创建元素节点并插入某个地方,有哪些方法?
发表评论
-
extjs在IE报对象不支持此属性或方法
2010-10-06 13:28 2630ExtJS在Firefox里面显示正常,但是用IE打开的时候报 ... -
Ext.grid.EditorGridPanel
2010-10-06 11:38 1616<HTML> <HEAD> ... -
国内首个基于Ext开发开源企业级框架,免费下载!!
2010-07-02 19:47 1814http://www.17ext.com/showforum- ... -
Ext.form.*使用技巧
2010-05-03 12:20 1126设置表单控件为只读: setFieldRead ... -
Ext JS高级插件开发教程
2010-05-03 12:19 1782当创建一个跨浏览器 ... -
项目中常使用的Ext插件
2010-05-03 12:12 1979http://bbs.ajaxjs.com/viewthrea ... -
Ext.ux.DataDrop.js
2010-05-03 12:10 1089http://code.google.com/p/ext-ux ... -
ExtJs 中 xtype 与组件类的对应表
2010-04-26 12:25 2450原文地址:http://blog.sina ... -
iframe in a tab panal
2010-04-11 13:25 1256http://www.extjs.com/forum/show ... -
ext中autoLoad页面中js的问题记录
2010-04-11 12:33 15281.增加script属性,如: var n = this.ad ... -
EXT card布局
2010-01-25 17:17 1577Ext.onReady(function(){ /// ... -
EXT window中加入照片
2010-01-25 17:15 1223Ext.onReady(function(){ ... -
Ext的Card布局示例
2010-01-25 17:14 1270//这个代码就有点通用性了 var navH ... -
Ext card布局
2010-01-25 17:13 1434Ext.layout.CardLayout扩展自Ext.lay ... -
实现Ext.TabPanel中tab内容的更新
2010-01-25 13:19 3088Ext.TabPanel中,如果一个tab项使用了autoLo ... -
Ext.TabPanel中autoLoad实现页面内容加载
2010-01-25 13:18 4013Ext.TabPanel中autoLoad属性可以实现异步加载 ... -
extjs中TabPanel中tab引用页面刷新导致这个页面刷新的问题
2010-01-25 13:16 5569Ext.getCmp('maintab').getActive ... -
SSH+Extjs分页小例子
2010-01-25 13:13 2290刚学,只做了简单的分 ... -
ExtJs是通过Ext.ToolTip和Ext.QuickTips两个组件来实现浮动提示功能的
2010-01-24 23:07 3769Ext.QuickTips QuickTips代码示例:只需 ... -
程序设置Extjs树中CheckBox的选中和取消选中设置
2010-01-22 14:11 4423在Extjs中treepanel中树节点为checkbox类的 ...
相关推荐
目录 1. ExtJs 结构树 2 2. 对ExtJs的态度 3 3. Ext.form概述 4 4. Ext.TabPanel篇 5 ...26. extJs 2.0学习笔记(Element.js篇) 73 27. extJs 2.0学习笔记(DomHelper.js篇) 76 28. extJs 2.0学习笔记(ext.js篇) 77
ExtJs2.0学习系列大全 共15个word文档,大部分介绍都在里面了
ExtJS2.0实用简明教程.rar
关于ext学习的资料,有些例子 ExtJs2.0学习系列.CHM
序 言 ExtJS是一个很不错的Ajax框架, 可以用来开发带有华丽外观的富客户端应用, 使得我 们的b/s应用更加具有...ExtJS的一些心得及小结, 希望能帮助正在学习或准备学习ExtJS的朋友们快速走进ExtJS2.0 的精彩世界。
ExtJS是一种基于JavaScript的开源富客户端框架,特别适用于构建企业级的Web应用程序。在ExtJS 2.0版本中,这个框架提供了丰富的组件库、强大的数据管理以及灵活的布局管理,使得开发者能够创建功能强大、界面友好的...
ExtJS 是一个强大的JavaScript库,专门用于构建富互联网应用程序(RIA)。在2.0版本中,它提供了丰富的组件和功能,让Web应用看起来更像桌面软件,提供了优秀的用户体验。这个"ExtJS2.0.rar"压缩包包含了关于如何...
14. **extJs 2.0 学习笔记(Ext.data序论篇)** 这部分介绍了Ext.data模块的基础,包括DataModel、Reader和Writer,是理解数据绑定和数据管理的关键。 15. **extJs 2.0 学习笔记(Ext.Panel终结篇)** Panel是...
Extjs4.0学习笔记大全.pdf,供大家学习
ExtJS是一个Ajax框架,是一个用javascript写的,用于在客户端创建丰富多彩的web应用程序界面。ExtJS可以用来开发RIA也即富客户端的AJAX应用,下 ExtJS是一个用javascript写的,主要用于创建前端用户界面,是一个与...
EXT2.0入门教程和API详细规范,适用于初级学习者和开发工作者
ExtJS 2.0 和 Spket 1.6.11 是两个在Web开发领域中常用的工具,尤其在创建富互联网应用程序(Rich Internet Applications,RIAs)时。这两个工具的结合使用可以极大地提升开发效率和代码质量。 **ExtJS 2.0** ExtJS...
由于无法直接查看图像内容,我将基于标题、描述和标签的内容,为您提供关于ExtJs2.0中文手册的知识点概述。 ExtJs是一个强大的JavaScript框架,用于创建富互联网应用(RIA)。它提供了一套丰富的组件和工具来构建...
通过深入EXTJS 2.0的源码,开发者不仅可以提升EXTJS的使用技巧,还能学习到JavaScript编程的最佳实践,对于前端开发者来说是一份宝贵的资源。不过,由于EXTJS后续版本(如EXTJS 4.x、6.x及更高版本)引入了许多新...
ExtJS 是一个强大的JavaScript库,专门用于构建富客户端Web应用程序。在ExtJS 2.0版本中,智能提示(Intelligent Hinting)是一项关键特性,它增强了开发人员的编码体验,提高了开发效率。智能提示功能提供了自动...
ExtJS 是一个很不错的Ajax 框架,可以用来开发带有华丽外观的富客户端应用,ExtJS 是一个用javascript 编写,与后台技术无关的前端ajax 框架。可以把ExtJS 用在.Net、Java、Php 等各种开发语言开发的应用中。教程...
ExtJS 2.0是一个基于JavaScript的开源AJAX框架,专为构建富互联网应用程序(RIA)而设计。它提供了一套完整的组件模型、数据绑定机制、丰富的用户界面控件和强大的API,使得开发者能够轻松创建功能强大且交互性强的...
ExtJS2.0实用简明教程.chm ExtJS2.0实用简明教程