⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 range.js

📁 这是一个ajax的例子大家好好的看看就是一个鱼眼的效果
💻 JS
📖 第 1 页 / 共 2 页
字号:
if(!dojo._hasResource["dijit._editor.range"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dijit._editor.range"] = true;dojo.provide("dijit._editor.range");dijit.range={};dijit.range.getIndex=function(/*DomNode*/node, /*DomNode*/parent){//	dojo.profile.start("dijit.range.getIndex");	var ret=[], retR=[];	var stop = parent;	var onode = node;	var pnode, n;	while(node != stop){		var i = 0;		pnode = node.parentNode;		while((n=pnode.childNodes[i++])){			if(n===node){				--i;				break;			}		}		if(i>=pnode.childNodes.length){			dojo.debug("Error finding index of a node in dijit.range.getIndex");		}		ret.unshift(i);		retR.unshift(i-pnode.childNodes.length);		node = pnode;	}	//normalized() can not be called so often to prevent	//invalidating selection/range, so we have to detect	//here that any text nodes in a row	if(ret.length>0 && onode.nodeType==3){		n = onode.previousSibling;		while(n && n.nodeType==3){			ret[ret.length-1]--;			n = n.previousSibling;		}		n = onode.nextSibling;		while(n && n.nodeType==3){			retR[retR.length-1]++;			n = n.nextSibling;		}	}//	dojo.profile.end("dijit.range.getIndex");	return {o: ret, r:retR};}dijit.range.getNode = function(/*Array*/index, /*DomNode*/parent){	if(!dojo.isArray(index) || index.length==0){		return parent;	}	var node = parent;//	if(!node)debugger	dojo.every(index, function(i){		if(i>=0&&i< node.childNodes.length){			node = node.childNodes[i];		}else{			node = null;			console.debug('Error: can not find node with index',index,'under parent node',parent );			return false; //terminate dojo.every		}		return true; //carry on the every loop	});	return node;}dijit.range.getCommonAncestor = function(n1,n2,root){	var getAncestors = function(n,root){		var as=[];		while(n){			as.unshift(n);			if(n!=root && n.tagName!='BODY'){				n = n.parentNode;			}else{				break;			}		}		return as;	};	var n1as = getAncestors(n1,root);	var n2as = getAncestors(n2,root);	var m = Math.min(n1as.length,n2as.length);	var com = n1as[0]; //at least, one element should be in the array: the root (BODY by default)	for(var i=1;i<m;i++){		if(n1as[i]===n2as[i]){			com = n1as[i]		}else{			break;		}	}	return com;}dijit.range.getAncestor = function(/*DomNode*/node, /*RegEx?*/regex, /*DomNode?*/root){	root = root || node.ownerDocument.body;	while(node && node !== root){		var name = node.nodeName.toUpperCase() ;		if(regex.test(name)){			return node;		}		node = node.parentNode;	}	return null;}dijit.range.BlockTagNames = /^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/;dijit.range.getBlockAncestor = function(/*DomNode*/node, /*RegEx?*/regex, /*DomNode?*/root){	root = root || node.ownerDocument.body;	regex = regex || dijit.range.BlockTagNames;	var block=null, blockContainer;	while(node && node !== root){		var name = node.nodeName.toUpperCase() ;		if(!block && regex.test(name)){			block = node;		}		if(!blockContainer && (/^(?:BODY|TD|TH|CAPTION)$/).test(name)){			blockContainer = node;		}		node = node.parentNode;	}	return {blockNode:block, blockContainer:blockContainer || node.ownerDocument.body};}dijit.range.atBeginningOfContainer = function(/*DomNode*/container, /*DomNode*/node, /*Int*/offset){	var atBeginning = false;	var offsetAtBeginning = (offset == 0);	if(!offsetAtBeginning && node.nodeType==3){ //if this is a text node, check whether the left part is all space		if(dojo.trim(node.nodeValue.substr(0,offset))==0){			offsetAtBeginning = true;		}	}	if(offsetAtBeginning){		var cnode = node;		atBeginning = true;		while(cnode && cnode !== container){			if(cnode.previousSibling){				atBeginning = false;				break;			}			cnode = cnode.parentNode;		}	}	return atBeginning;}dijit.range.atEndOfContainer = function(/*DomNode*/container, /*DomNode*/node, /*Int*/offset){	var atEnd = false;	var offsetAtEnd = (offset == (node.length || node.childNodes.length));	if(!offsetAtEnd && node.nodeType==3){ //if this is a text node, check whether the right part is all space		if(dojo.trim(node.nodeValue.substr(offset))==0){			offsetAtEnd = true;		}	}	if(offsetAtEnd){		var cnode = node;		atEnd = true;		while(cnode && cnode !== container){			if(cnode.nextSibling){				atEnd = false;				break;			}			cnode = cnode.parentNode;		}	}	return atEnd;}dijit.range.adjacentNoneTextNode=function(startnode, next){	var node = startnode;	var len = (0-startnode.length) || 0;	var prop = next?'nextSibling':'previousSibling';	while(node){		if(node.nodeType!=3){			break;		}		len += node.length		node = node[prop];	}	return [node,len];}dijit.range._w3c = Boolean(window['getSelection']);dijit.range.create = function(){	if(dijit.range._w3c){		return dojo.doc.createRange();	}else{//IE		return new dijit.range.W3CRange;	}}dijit.range.getSelection = function(win, /*Boolean?*/ignoreUpdate){	if(dijit.range._w3c){		return win.getSelection();	}else{//IE		var id=win.__W3CRange,s;		if(!id || !dijit.range.ie.cachedSelection[id]){			s = new dijit.range.ie.selection(win);			//use win as the key in an object is not reliable, which			//can leads to quite odd behaviors. thus we generate a			//string and use it as a key in the cache			id=(new Date).getTime();			while(id in dijit.range.ie.cachedSelection){				id=id+1;			}			id=String(id);			dijit.range.ie.cachedSelection[id] = s;		}else{			s = dijit.range.ie.cachedSelection[id];		}		if(!ignoreUpdate){			s._getCurrentSelection();		}		return s;	}}if(!dijit.range._w3c){	dijit.range.ie={		cachedSelection: {},		selection: function(win){			this._ranges = [];			this.addRange = function(r, /*boolean*/internal){				this._ranges.push(r);				if(!internal){					r._select();				}				this.rangeCount = this._ranges.length;			};			this.removeAllRanges = function(){				//don't detach, the range may be used later//				for(var i=0;i<this._ranges.length;i++){//					this._ranges[i].detach();//				}				this._ranges = [];				this.rangeCount = 0;			};			var _initCurrentRange = function(){				var r = win.document.selection.createRange();				var type=win.document.selection.type.toUpperCase();				if(type == "CONTROL"){					//TODO: multiple range selection(?)					return new dijit.range.W3CRange(dijit.range.ie.decomposeControlRange(r));				}else{					return new dijit.range.W3CRange(dijit.range.ie.decomposeTextRange(r));				}			};			this.getRangeAt = function(i){				return this._ranges[i];			};			this._getCurrentSelection = function(){				this.removeAllRanges();				var r=_initCurrentRange();				if(r){					this.addRange(r, true);				}			};		},		decomposeControlRange: function(range){			var firstnode = range.item(0), lastnode = range.item(range.length-1)			var startContainer = firstnode.parentNode, endContainer = lastnode.parentNode;			var startOffset = dijit.range.getIndex(firstnode, startContainer).o;			var endOffset = dijit.range.getIndex(lastnode, endContainer).o+1;			return [[startContainer, startOffset],[endContainer, endOffset]];		},		getEndPoint: function(range, end){			var atmrange = range.duplicate();			atmrange.collapse(!end);			var cmpstr = 'EndTo' + (end?'End':'Start');			var parentNode = atmrange.parentElement();			var startnode, startOffset, lastNode;			if(parentNode.childNodes.length>0){				dojo.every(parentNode.childNodes, function(node,i){					var calOffset;					if(node.nodeType != 3){						atmrange.moveToElementText(node);						if(atmrange.compareEndPoints(cmpstr,range) > 0){							startnode = node.previousSibling;							if(lastNode && lastNode.nodeType == 3){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -