Ext JS是一个创建丰富互联网应用程序的跨浏览器的JavaScrip库。它包含:高效率

源代码在线查看: ext-base-dom.js

软件大小: 7769 K
上传用户: cdcgl
关键词: JavaScrip Ext 互联网 应用程序
下载地址: 免注册下载 普通下载 VIP

相关代码

				/*
				 * Ext JS Library 3.0 Pre-alpha
				 * Copyright(c) 2006-2008, Ext JS, LLC.
				 * licensing@extjs.com
				 * 
				 * http://extjs.com/license
				 */
				
				(function(){
					var doc = document,
						isCSS1 = doc.compatMode == "CSS1Compat",
						MAX = Math.max,		
						PARSEINT = parseInt;
						
					Ext.lib.Dom = {
					    isAncestor : function(p, c) {
						    var ret = false;
							
							p = Ext.getDom(p);
							c = Ext.getDom(c);
							if (p && c) {
								if (p.contains) {
									return p.contains(c);
								} else if (p.compareDocumentPosition) {
									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];
				        },
				
				        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){
					            if (el.getBoundingClientRect) {
					                b = el.getBoundingClientRect();
					                scroll = fly(document).getScroll();
					                ret = [b.left + scroll.left, b.top + scroll.top];
					            } else {  
						            p = el;		
						            hasAbsolute = fly(el).isStyle("position", "absolute");
						
						            while (p) {
							            pe = fly(p);		
						                x += p.offsetLeft;
						                y += p.offsetTop;
						
						                hasAbsolute = hasAbsolute || pe.isStyle("position", "absolute");
						                		
						                if (Ext.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();
				            
				            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]);
				        }
				    };
				})();			

相关资源