- 浏览: 257068 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
dhunter:
mongodb 需要auth 怎么加呢?
linux下mongodb+nodejs环境搭建 -
y1d2y3xyz:
xie666 写道html.push('<td alig ...
javascript DOM操作性能-----创建DOM -
xie666:
html.push('<td align="c ...
javascript DOM操作性能-----创建DOM -
轩辕丶菓菓:
bushkarl 写道那我后台用struts2,我的name一 ...
Ext表单之loadRecord用法详解 -
heikediguo:
这样不会按照你想要的顺序加载。
加载JS文件
Extjs的对Dom最基础的封装,主要包括:元素的包含关系,元素或文档的可视宽高,获取元素的位置,设置元素的位置,这些都是elment最基础的属性,这涉及到各个浏览器兼容器问题,如果想获得详细解答,可以看看 Nicholas C.Zakas 的《javascript高级程序设计》第二版 第11章261-268页
(function(){ var doc = document, //浏览器盒状模式:BackCompa->Quirks Modet和CSS1Compat->Standards Mode 跟文档声明相关 isCSS1 = doc.compatMode == "CSS1Compat",//Ext.isStrict就是这么做的,为什么Ext不用这个,这里重新设置下,而且下面也有用这个,有点想不通这么做的用意 MAX = Math.max, ROUND = Math.round, PARSEINT = parseInt; Ext.lib.Dom = { isAncestor : function(p, c) {//判断p是否包含子节点c var ret = false; p = Ext.getDom(p); c = Ext.getDom(c); if (p && c) { //contains IE,Safari 3+,Opear 8+,Chorme 支持 contains if (p.contains) { return p.contains(c); } else if (p.compareDocumentPosition) {//ff 支持compareDocumentPosition,并有返回值,1->无关 2->居前 3->居后 8->包含 16->被包含 return !!(p.compareDocumentPosition(c) & 16); } else {//循环查找的方式 while (c = c.parentNode) { ret = c == p || ret; } } } return ret; }, //这个调用下面的方法 getViewWidth : function(full) { return full ? this.getDocumentWidth() : this.getViewportWidth(); }, //这个调用下面的方法 getViewHeight : function(full) { return full ? this.getDocumentHeight() : this.getViewportHeight(); }, //接下来的四个方法很简单,也就是从浏览器版本和盒子模型上的兼容性做判断 getDocumentHeight: function() { return MAX(!isCSS1 ? doc.body.scrollHeight : doc.documentElement.scrollHeight, this.getViewportHeight()); }, getDocumentWidth: function() { return MAX(!isCSS1 ? doc.body.scrollWidth : doc.documentElement.scrollWidth, this.getViewportWidth()); }, getViewportHeight: function(){ return Ext.isIE ? (Ext.isStrict ? doc.documentElement.clientHeight : doc.body.clientHeight) : self.innerHeight; }, getViewportWidth : function() { return !Ext.isStrict && !Ext.isOpera ? doc.body.clientWidth : Ext.isIE ? doc.documentElement.clientWidth : self.innerWidth; }, getY : function(el) { return this.getXY(el)[1]; }, getX : function(el) { return this.getXY(el)[0]; }, //核心获取节点的x y 是位置 getXY : function(el) { var p, pe, b, bt, bl, dbd, x = 0, y = 0, scroll, hasAbsolute, bd = (doc.body || doc.documentElement), ret = [0,0]; el = Ext.getDom(el); if(el != bd){ //getBoundingClientRect,IE,FF3+,Opera9.5+ 都支持,IE和其他浏览器对于文档的位置是不一样的,IE为(2,2),其他为(0,0) if (el.getBoundingClientRect) { b = el.getBoundingClientRect(); scroll = fly(document).getScroll(); ret = [ROUND(b.left + scroll.left), ROUND(b.top + scroll.top)]; } else { p = el; hasAbsolute = fly(el).isStyle("position", "absolute"); //循环向上查找元素,并改变元素的x,y while (p) { pe = fly(p); x += p.offsetLeft; y += p.offsetTop; hasAbsolute = hasAbsolute || pe.isStyle("position", "absolute"); if (Ext.isGecko) { //isGecko 需要加上边框值 y += bt = PARSEINT(pe.getStyle("borderTopWidth"), 10) || 0; x += bl = PARSEINT(pe.getStyle("borderLeftWidth"), 10) || 0; if (p != el && !pe.isStyle('overflow','visible')) { x += bl; y += bt; } } p = p.offsetParent; } if (Ext.isSafari && hasAbsolute) { x -= bd.offsetLeft; y -= bd.offsetTop; } if (Ext.isGecko && !hasAbsolute) { dbd = fly(bd); x += PARSEINT(dbd.getStyle("borderLeftWidth"), 10) || 0; y += PARSEINT(dbd.getStyle("borderTopWidth"), 10) || 0; } p = el.parentNode; while (p && p != bd) { if (!Ext.isOpera || (p.tagName != 'TR' && !fly(p).isStyle("display", "inline"))) { x -= p.scrollLeft; y -= p.scrollTop; } p = p.parentNode; } ret = [x,y]; } } return ret }, setXY : function(el, xy) { (el = Ext.fly(el, '_setXY')).position(); //参见 Ext.Element.translatePoints,其返回left,top值 var pts = el.translatePoints(xy), style = el.dom.style, pos; for (pos in pts) { if(!isNaN(pts[pos])) style[pos] = pts[pos] + "px" } }, setX : function(el, x) { this.setXY(el, [x, false]); }, setY : function(el, y) { this.setXY(el, [false, y]); } }; })();
发表评论
-
Extjs源码之--Ext事件机制/继承关系
2011-10-16 16:36 1859Extjs源码之--Ext.lib.Event 中分析了EX ... -
Extjs源码之--Ext.lib.Event(事件的简单封装)
2011-10-16 11:34 2641这个对象是对事件的基础封装,在实际使用中,我们往往不从这里去 ... -
Extjs源码之---Ext.util.DelayedTask
2011-10-12 22:56 2431/* 创建对象 var task = new Ext. ... -
Extjs源码之-- Ext.util.JSON
2011-09-23 23:19 4038很多写extjs的朋友说,Extjs的源码之间的关系太紧了,所 ... -
Ext.form.ComboBox 远程带分页显示
2011-09-23 22:00 1866很多时候针对大数据量的下拉列表的时候,我们通常需要分页显示数据 ... -
Ext.form.ComboBox change事件的BUG
2011-09-08 23:11 5390因为项目需要,想用Ext的combo控件实现动态级联,发现co ... -
Ext.grid.EditorGridPanel 中combo的显示异常
2011-09-03 00:58 2769Ext.grid.EditorGridPanel 在项目中用到 ... -
extjs源码分析-Ext.util.TaskRunner(模拟多线程)
2011-08-12 12:09 3011/** * @class Ext.util.TaskR ... -
extjs源码分析-016(Ext....)
2011-03-28 23:04 1045Ext.apply(Ext, function(){ ... -
extjs源码分析-015(Number扩展)
2011-03-20 01:03 878Ext.applyIf(Number.prototype, ... -
extjs源码分析-013(Array扩展)
2011-03-19 11:03 1116Ext.applyIf(Array.prototype, ... -
extjs源码分析-013(String扩展)
2011-03-18 23:05 1272//字符串替换 /* var cls = 'my-cl ... -
extjs源码分析-012(Funtion扩展)
2011-03-18 22:42 1289Ext.apply(Function.prototype, ... -
extjs源码分析-011(namespace)
2011-03-10 22:54 1083//命名空间,就是创建一个OBJ的一个属性, names ... -
extjs源码分析-009(Ext.urlAppend/toArray)
2011-03-10 22:43 1856//在URL后面追加参数 urlAppend : fun ... -
extjs源码分析-009(Ext.urlDecode/urlEncode)
2011-03-09 23:17 3258//把json格式转化成url的编码方式 // e.g. ... -
extjs源码分析-008(Ext.removeNode)
2011-03-09 22:35 1781DOC = document; removeNode : ... -
extjs源码分析-007(Ext.each)
2011-02-08 14:40 1613each : function(array, fn ... -
extjs源码分析-006(Ext.override/Ext.extend)
2011-02-08 00:40 2123override : function(o ... -
extjs源码分析-005(Ext.getDom,Ext.getBody)
2011-02-08 00:22 2030var DOC = document; //获取DOM节 ...
相关推荐
标题中的"extjs-Ext.ux.form.LovCombo下拉框"表明我们要讨论的是EXTJS中的一个特定组件,它是EXTJS的扩展插件,用于实现具有多选功能的下拉框。这个组件在处理火狐浏览器兼容性问题上做了优化,解决了在火狐浏览器下...
Ext.get('example').dom.innerHTML = txt; } else if (btn == 'cancel') { // do something on cancel } }, animateTarget: 'addAddressBtn', icon: Ext.window.MessageBox.INFO }); }); ``` 在上述...
Extjs中实现国际化要用到的文件ext-lang-zh_CN.js和ext-lang-en.js
从ext官方论坛上下的。 文件名: ext-4.2.1.883.jsb2 对应版本ext-4.2.1.883
从spket IDE 官网下载。 文件名: ext-4.2.1.883.jsb2 对应版本ext-4.2.*版本。spket自动提示ExtJs4,需要ext4.2.1.jsp2文件。
Ext JS 6最大的变化就是将Ext JS和Touch合并为一个单一的框架。之前的框架的核心(数据、控制器、模型等等)已被调和为一个单一的公共平台。这样,数据和逻辑就能共享,从而帮助开发人员进一步去优化他们的应用程序...
官方最新版本Extjs6.2版本sdk,创建新项目的时候需要用, 全面的核心框架,具有最新的Javascript标准支持 新的漂亮组件和主题,以创建漂亮的企业应用程序 现代工具链,用于构建优化,高性能,通用的应用程序 用于可视...
在“Extjs源码之--Ext事件机制/继承关系”中,我们将深入探讨EXTJS如何处理事件以及其类层次结构。EXTJS的事件处理主要由EventManager.js这个文件负责,它是EXTJS事件系统的基础。 首先,EXTJS的事件机制基于观察者...
标题中的"ext-4.2.1.883.7z"指的是ExtJS框架的一个特定版本,4.2.1.883,它被压缩成了7z格式的文件。7z是一种高效的文件压缩格式,由7-Zip软件创建,以提供更高的压缩比和更快的解压缩速度。7z文件通常需要使用支持7...
### ExtJs选中 `var editor = new Ext.ux.grid.RowEditor` 详解 在Web开发领域,特别是使用ExtJs框架进行复杂用户界面构建时,`RowEditor` 是一个非常实用的功能,它允许用户直接在表格行内编辑数据,极大地提高了...
标题中的"ext-7.0.0-gpl.zip"是一个软件扩展或库的压缩包,遵循GPL(GNU General Public License)开源协议。这通常意味着它是一个免费的、可修改的软件,用户可以查看源代码并根据需要进行定制,但必须保留原始许可...
这段代码包含了ExtJs的基本样式表和JavaScript库,以及中文语言包,确保了组件的正常显示和中文支持。 接着,引入`Global.js`文件,这里通常包含了一些全局设置和初始化函数。同时,定义了一个CSS样式,用于设置...
Sencha Ext JS is the most comprehensive JavaScript framework for building data-intensive, cross-platform web and mobile applications for any modern device. Ext JS includes 140+ pre-integrated and ...
在本压缩包"ext-4.2.0.663 EXTJS官方最新版7z压缩"中,文件名"ext-4.2.0.663"表明这是EXTJS 4.2.0的某个更新版本,具体为663号更新。这个版本可能包含了EXTJS框架的新特性、bug修复或者性能改进。由于使用了7z压缩,...
extjs-620-docs官方文档extjs-620-docs官方文档extjs-620-docs官方文档
js框架 extjs-4.2.1.883.7z
无论是界面之美,还是功能之强,ext的表格控件都高居榜首。 单选行,多选行,高亮显示选中的行,推拽改变列宽度,按列排序,这些基本功能ExtJS轻量级实现。 自动生成行号,支持checkbox全选,动态选择显示哪些列,...
Ext JS 6最大的变化就是将Ext JS和Touch合并为一个单一的框架。之前的框架的核心(数据、控制器、模型等等)已被调和为一个单一的公共平台。这样,数据和逻辑就能共享,从而帮助开发人员进一步去优化他们的应用程序...
在本压缩包"extjs-5.0.0.736.zip"中,包含的是Ext JS 5.0 Beta版,这是一个早期的预览版本,旨在让开发者提前试用并提供反馈,以便在正式版本发布前改进。 Ext JS 5带来了许多新特性与改进,首先,它引入了MVVM...
这个"extjs-700-docs离线文档.zip"文件包含了ExtJS 7.0.0版本的完整离线开发文档,旨在帮助开发者在没有网络连接的情况下也能便捷地查阅API、示例和指南。 1. **ExtJS 7.0.0**: 这是ExtJS的一个主要版本,它引入了...