亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? domwidget.js

?? 圖書管理系統包括圖書的增加、刪除、修改等功能
?? JS
?? 第 1 頁 / 共 2 頁
字號:
	templateNode: null,	templateString: null,	templateCssString: null,	preventClobber: false,	domNode: null, // this is our visible representation of the widget!	containerNode: null, // holds child elements	// Process the given child widget, inserting it's dom node as a child of our dom node	// FIXME: should we support addition at an index in the children arr and	// order the display accordingly? Right now we always append.	addChild: function(widget, overrideContainerNode, pos, ref, insertIndex){		if(!this.isContainer){ // we aren't allowed to contain other widgets, it seems			dojo.debug("dojo.widget.DomWidget.addChild() attempted on non-container widget");			return null;		}else{			this.addWidgetAsDirectChild(widget, overrideContainerNode, pos, ref, insertIndex);			this.registerChild(widget, insertIndex);		}		return widget;	},		addWidgetAsDirectChild: function(widget, overrideContainerNode, pos, ref, insertIndex){		if((!this.containerNode)&&(!overrideContainerNode)){			this.containerNode = this.domNode;		}		var cn = (overrideContainerNode) ? overrideContainerNode : this.containerNode;		if(!pos){ pos = "after"; }		if(!ref){ 			// if(!cn){ cn = document.body; }			if(!cn){ cn = document.body; }			ref = cn.lastChild; 		}		if(!insertIndex) { insertIndex = 0; }		widget.domNode.setAttribute("dojoinsertionindex", insertIndex);		// insert the child widget domNode directly underneath my domNode, in the		// specified position (by default, append to end)		if(!ref){			cn.appendChild(widget.domNode);		}else{			// FIXME: was this meant to be the (ugly hack) way to support insert @ index?			//dojo.dom[pos](widget.domNode, ref, insertIndex);			// CAL: this appears to be the intended way to insert a node at a given position...			if (pos == 'insertAtIndex'){				// dojo.debug("idx:", insertIndex, "isLast:", ref === cn.lastChild);				dojo.dom.insertAtIndex(widget.domNode, ref.parentNode, insertIndex);			}else{				// dojo.debug("pos:", pos, "isLast:", ref === cn.lastChild);				if((pos == "after")&&(ref === cn.lastChild)){					cn.appendChild(widget.domNode);				}else{					dojo.dom.insertAtPosition(widget.domNode, cn, pos);				}			}		}	},	// Record that given widget descends from me	registerChild: function(widget, insertionIndex){		// we need to insert the child at the right point in the parent's 		// 'children' array, based on the insertionIndex		widget.dojoInsertionIndex = insertionIndex;		var idx = -1;		for(var i=0; i<this.children.length; i++){			if (this.children[i].dojoInsertionIndex < insertionIndex){				idx = i;			}		}		this.children.splice(idx+1, 0, widget);		widget.parent = this;		widget.addedTo(this);				// If this widget was created programatically, then it was erroneously added		// to dojo.widget.manager.topWidgets.  Fix that here.		delete dojo.widget.manager.topWidgets[widget.widgetId];	},	removeChild: function(widget){		// detach child domNode from parent domNode		dojo.dom.removeNode(widget.domNode);		// remove child widget from parent widget		return dojo.widget.DomWidget.superclass.removeChild.call(this, widget);	},	getFragNodeRef: function(frag){		if( !frag || !frag["dojo:"+this.widgetType.toLowerCase()] ){			dojo.raise("Error: no frag for widget type " + this.widgetType +				", id " + this.widgetId + " (maybe a widget has set it's type incorrectly)");		}		return (frag ? frag["dojo:"+this.widgetType.toLowerCase()]["nodeRef"] : null);	},		// Replace source domNode with generated dom structure, and register	// widget with parent.	postInitialize: function(args, frag, parentComp){		var sourceNodeRef = this.getFragNodeRef(frag);		// Stick my generated dom into the output tree		//alert(this.widgetId + ": replacing " + sourceNodeRef + " with " + this.domNode.innerHTML);		if (parentComp && (parentComp.snarfChildDomOutput || !sourceNodeRef)){			// Add my generated dom as a direct child of my parent widget			// This is important for generated widgets, and also cases where I am generating an			// <li> node that can't be inserted back into the original DOM tree			parentComp.addWidgetAsDirectChild(this, "", "insertAtIndex", "",  args["dojoinsertionindex"], sourceNodeRef);		} else if (sourceNodeRef){			// Do in-place replacement of the my source node with my generated dom			if(this.domNode && (this.domNode !== sourceNodeRef)){				var oldNode = sourceNodeRef.parentNode.replaceChild(this.domNode, sourceNodeRef);			}		}		// Register myself with my parent, or with the widget manager if		// I have no parent		// TODO: the code below erroneously adds all programatically generated widgets		// to topWidgets (since we don't know who the parent is until after creation finishes)		if ( parentComp ) {			parentComp.registerChild(this, args.dojoinsertionindex);		} else {			dojo.widget.manager.topWidgets[this.widgetId]=this;		}		// Expand my children widgets		if(this.isContainer){			//alert("recurse from " + this.widgetId);			// build any sub-components with us as the parent			var fragParser = dojo.widget.getParser();			fragParser.createSubComponents(frag, this);		}	},	// method over-ride	buildRendering: function(args, frag){		// DOM widgets construct themselves from a template		var ts = dojo.widget._templateCache[this.widgetType];		if(				(!this.preventClobber)&&(				(this.templatePath)||				(this.templateNode)||				(					(this["templateString"])&&(this.templateString.length) 				)||				(					(typeof ts != "undefined")&&( (ts["string"])||(ts["node"]) )				)			)		){			// if it looks like we can build the thing from a template, do it!			this.buildFromTemplate(args, frag);		}else{			// otherwise, assign the DOM node that was the source of the widget			// parsing to be the root node			this.domNode = this.getFragNodeRef(frag);		}		this.fillInTemplate(args, frag); 	// this is where individual widgets											// will handle population of data											// from properties, remote data											// sets, etc.	},	buildFromTemplate: function(args, frag){		// var start = new Date();		// copy template properties if they're already set in the templates object		// dojo.debug("buildFromTemplate:", this);		var avoidCache = false;		if(args["templatecsspath"]){			args["templateCssPath"] = args["templatecsspath"];		}		if(args["templatepath"]){			avoidCache = true;			args["templatePath"] = args["templatepath"];		}		dojo.widget.fillFromTemplateCache(	this, 											args["templatePath"], 											args["templateCssPath"],											null,											avoidCache);		var ts = dojo.widget._templateCache[this.widgetType];		if((ts)&&(!avoidCache)){			if(!this.templateString.length){				this.templateString = ts["string"];			}			if(!this.templateNode){				this.templateNode = ts["node"];			}		}		var matches = false;		var node = null;		// var tstr = new String(this.templateString); 		var tstr = this.templateString; 		// attempt to clone a template node, if there is one		if((!this.templateNode)&&(this.templateString)){			matches = this.templateString.match(/\$\{([^\}]+)\}/g);			if(matches) {				// if we do property replacement, don't create a templateNode				// to clone from.				var hash = this.strings || {};				// FIXME: should this hash of default replacements be cached in				// templateString?				for(var key in dojo.widget.defaultStrings) {					if(dojo.lang.isUndefined(hash[key])) {						hash[key] = dojo.widget.defaultStrings[key];					}				}				// FIXME: this is a lot of string munging. Can we make it faster?				for(var i = 0; i < matches.length; i++) {					var key = matches[i];					key = key.substring(2, key.length-1);					var kval = (key.substring(0, 5) == "this.") ? dojo.lang.getObjPathValue(key.substring(5), this) : hash[key];					var value;					if((kval)||(dojo.lang.isString(kval))){						value = (dojo.lang.isFunction(kval)) ? kval.call(this, key, this.templateString) : kval;						tstr = tstr.replace(matches[i], value);					}				}			}else{				// otherwise, we are required to instantiate a copy of the template				// string if one is provided.								// FIXME: need to be able to distinguish here what should be done				// or provide a generic interface across all DOM implementations				// FIMXE: this breaks if the template has whitespace as its first 				// characters				// node = this.createNodesFromText(this.templateString, true);				// this.templateNode = node[0].cloneNode(true); // we're optimistic here				this.templateNode = this.createNodesFromText(this.templateString, true)[0];				if(!avoidCache){					ts.node = this.templateNode;				}			}		}		if((!this.templateNode)&&(!matches)){ 			dojo.debug("weren't able to create template!");			return false;		}else if(!matches){			node = this.templateNode.cloneNode(true);			if(!node){ return false; }		}else{			node = this.createNodesFromText(tstr, true)[0];		}		// recurse through the node, looking for, and attaching to, our		// attachment points which should be defined on the template node.		this.domNode = node;		// dojo.profile.start("attachTemplateNodes");		this.attachTemplateNodes(this.domNode, this);		// dojo.profile.end("attachTemplateNodes");				// relocate source contents to templated container node		// this.containerNode must be able to receive children, or exceptions will be thrown		if (this.isContainer && this.containerNode){			var src = this.getFragNodeRef(frag);			if (src){				dojo.dom.moveChildren(src, this.containerNode);			}		}	},	attachTemplateNodes: function(baseNode, targetObj){		if(!targetObj){ targetObj = this; }		return dojo.widget.attachTemplateNodes(baseNode, targetObj, 					dojo.widget.getDojoEventsFromStr(this.templateString));	},	fillInTemplate: function(){		// dojo.unimplemented("dojo.widget.DomWidget.fillInTemplate");	},		// method over-ride	destroyRendering: function(){		try{			delete this.domNode;		}catch(e){ /* squelch! */ }	},	// FIXME: method over-ride	cleanUp: function(){},		getContainerHeight: function(){		dojo.unimplemented("dojo.widget.DomWidget.getContainerHeight");	},	getContainerWidth: function(){		dojo.unimplemented("dojo.widget.DomWidget.getContainerWidth");	},	createNodesFromText: function(){		dojo.unimplemented("dojo.widget.DomWidget.createNodesFromText");	}});

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷成人激情在线网| 国产一区二区三区日韩| 日本vs亚洲vs韩国一区三区 | 国产亚洲精品超碰| 一区二区三区高清不卡| 韩国v欧美v亚洲v日本v| 91国在线观看| 中文字幕免费不卡在线| 美女视频黄 久久| 色婷婷av一区二区三区软件| 久久综合色综合88| 午夜久久久久久电影| 波多野结衣亚洲一区| 精品国产一区二区三区忘忧草| 亚洲嫩草精品久久| 懂色av一区二区夜夜嗨| 精品剧情在线观看| 亚洲国产aⅴ成人精品无吗| 成人激情动漫在线观看| 欧美一级专区免费大片| 国产精品蜜臀av| 国产老女人精品毛片久久| 777xxx欧美| 亚洲777理论| 欧美日精品一区视频| 亚洲色图丝袜美腿| 99r国产精品| 欧美国产成人在线| 国产成人免费视频网站| 久久综合九色综合97婷婷| 青青草原综合久久大伊人精品 | 91麻豆国产福利在线观看| 久久久久久久电影| 国产馆精品极品| 欧美精品一区视频| 国产成人在线看| 欧美激情一区二区三区| 国产成人午夜电影网| 久久久久99精品国产片| 国产精品资源在线看| 欧美电影免费观看高清完整版在线观看| 亚洲国产成人精品视频| 精品视频123区在线观看| 亚洲午夜在线电影| 91精品国产欧美一区二区成人| 午夜视频一区二区三区| 91精品欧美久久久久久动漫| 奇米精品一区二区三区在线观看| 69久久夜色精品国产69蝌蚪网| 日本中文字幕一区| 欧美成人官网二区| 成人三级伦理片| 亚洲三级在线观看| 在线视频一区二区免费| 亚洲国产精品视频| 欧美一级二级三级乱码| 国产精品一线二线三线精华| 国产精品女人毛片| 欧美日韩一区 二区 三区 久久精品| 亚洲欧美aⅴ...| 欧美高清www午色夜在线视频| 日韩高清在线电影| 久久色视频免费观看| 97久久精品人人爽人人爽蜜臀| 麻豆国产91在线播放| 国产精品女同一区二区三区| 在线观看日韩毛片| 国产乱国产乱300精品| 亚洲精品伦理在线| 日韩欧美一区二区视频| 成人av资源站| 图片区小说区区亚洲影院| 国产亚洲婷婷免费| 欧美亚洲国产一区在线观看网站| 美女性感视频久久| 综合亚洲深深色噜噜狠狠网站| 欧美三级午夜理伦三级中视频| 精品一区二区三区在线观看 | 欧美变态tickle挠乳网站| 国产a视频精品免费观看| 亚洲免费观看高清完整版在线| 91精品国产福利| 91蜜桃传媒精品久久久一区二区| 人人爽香蕉精品| 亚洲欧美日韩国产手机在线 | 在线观看欧美日本| 国产一区不卡视频| 亚洲五月六月丁香激情| 久久久天堂av| 日韩欧美美女一区二区三区| 成人av电影免费观看| 美女一区二区三区在线观看| 一区二区三区免费网站| 日本一二三不卡| 日韩精品一区在线| 欧美男同性恋视频网站| 97精品久久久久中文字幕| 国产在线精品一区在线观看麻豆| 亚洲精品中文在线观看| 欧美国产综合一区二区| 欧美一区二区三区小说| 欧美日韩精品高清| 97精品超碰一区二区三区| 国产不卡在线视频| 老司机精品视频在线| 丝袜美腿高跟呻吟高潮一区| 一区二区在线观看视频| 国产精品嫩草99a| 欧美国产激情二区三区 | 亚洲女人小视频在线观看| 国产日韩精品一区| 精品国产sm最大网站免费看| 欧美夫妻性生活| 欧美午夜精品免费| 在线视频综合导航| 日本精品一区二区三区高清| 91视频免费观看| 97超碰欧美中文字幕| 91免费观看在线| 色www精品视频在线观看| 欧美成人激情免费网| 日韩三区在线观看| 精品国产一区二区三区av性色| 欧美一区二区三区公司| 91精品国产一区二区| 7777精品伊人久久久大香线蕉的| 欧美日韩久久久| 欧美一卡二卡在线| 久久这里只有精品视频网| 久久午夜电影网| 中文字幕乱码一区二区免费| 国产精品人人做人人爽人人添| 中文字幕第一区第二区| 亚洲少妇中出一区| 亚洲国产精品欧美一二99| 午夜精品福利一区二区三区av| 亚洲一区二区三区国产| 青青国产91久久久久久| 国产一区二区导航在线播放| 成人性视频网站| 91尤物视频在线观看| 欧美伦理视频网站| 日韩欧美在线网站| 国产精品毛片大码女人| 亚洲美女在线一区| 日韩和的一区二区| 激情综合色综合久久综合| 福利一区福利二区| 91久久精品网| 欧美一二三区精品| 国产精品三级视频| 亚洲第一在线综合网站| 精彩视频一区二区三区| 北岛玲一区二区三区四区| 欧美性大战久久久久久久 | 国产精品女主播av| 亚洲免费电影在线| 亚洲国产综合91精品麻豆| 裸体在线国模精品偷拍| 成人av综合在线| 91麻豆精品国产91| 国产精品久久久久久久久免费相片 | 亚洲午夜精品在线| 日本一区二区三区久久久久久久久不| 久久精品亚洲麻豆av一区二区| 国产精品嫩草99a| 婷婷国产v国产偷v亚洲高清| 欧美三区在线视频| 亚洲人成伊人成综合网小说| 久久机这里只有精品| 国产精品免费久久久久| 极品少妇一区二区| 欧美日韩激情一区二区| 日韩三级.com| 裸体一区二区三区| 91精品视频网| 日本伊人午夜精品| 国产精品大尺度| 亚洲综合在线电影| 国产成人一区在线| 久久久久久久电影| 图片区日韩欧美亚洲| 国产精品亚洲а∨天堂免在线| 日本精品一区二区三区四区的功能| 国产午夜一区二区三区| 亚洲精选视频免费看| 国产乱码精品一区二区三区忘忧草| 欧美片网站yy| 亚洲欧美一区二区三区久本道91| 蜜桃视频第一区免费观看| 蜜臀av国产精品久久久久| 欧美日韩一区二区三区高清 | 丝袜亚洲精品中文字幕一区| 成人国产亚洲欧美成人综合网| 久久久精品国产免大香伊| 午夜电影网一区| 91久久精品午夜一区二区| 2023国产精品| 久久91精品国产91久久小草| 欧美亚洲国产怡红院影院|