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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? widget.js

?? 圖書管理系統(tǒng)包括圖書的增加、刪除、修改等功能
?? JS
?? 第 1 頁 / 共 2 頁
字號:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.widget.Widget");dojo.provide("dojo.widget.tags");dojo.require("dojo.lang.func");dojo.require("dojo.lang.array");dojo.require("dojo.lang.extras");dojo.require("dojo.lang.declare");dojo.require("dojo.widget.Manager");dojo.require("dojo.event.*");dojo.declare("dojo.widget.Widget", null, {	initializer: function() {								 		// these properties aren't primitives and need to be created on a per-item		// basis.		this.children = [];		// this.selection = new dojo.widget.Selection();		// FIXME: need to replace this with context menu stuff		this.extraArgs = {};	},	// FIXME: need to be able to disambiguate what our rendering context is	//        here!	//	// needs to be a string with the end classname. Every subclass MUST	// over-ride.	//	// base widget properties	parent: null,	// obviously, top-level and modal widgets should set these appropriately	isTopLevel:  false,	isModal: false,	isEnabled: true,	isHidden: false,	isContainer: false, // can we contain other widgets?	widgetId: "",	widgetType: "Widget", // used for building generic widgets	toString: function() {		return '[Widget ' + this.widgetType + ', ' + (this.widgetId || 'NO ID') + ']';	},	repr: function(){		return this.toString();	},	enable: function(){		// should be over-ridden		this.isEnabled = true;	},	disable: function(){		// should be over-ridden		this.isEnabled = false;	},	hide: function(){		// should be over-ridden		this.isHidden = true;	},	show: function(){		// should be over-ridden		this.isHidden = false;	},	onResized: function(){		// Clients should override this function to do special processing,		// then call this.notifyChildrenOfResize() to notify children of resize		this.notifyChildrenOfResize();	},		notifyChildrenOfResize: function(){		for(var i=0; i<this.children.length; i++){			var child = this.children[i];			//dojo.debug(this.widgetId + " resizing child " + child.widgetId);			if( child.onResized ){				child.onResized();			}		}	},	create: function(args, fragment, parentComp){		// dojo.debug(this.widgetType, "create");		this.satisfyPropertySets(args, fragment, parentComp);		// dojo.debug(this.widgetType, "-> mixInProperties");		this.mixInProperties(args, fragment, parentComp);		// dojo.debug(this.widgetType, "-> postMixInProperties");		this.postMixInProperties(args, fragment, parentComp);		// dojo.debug(this.widgetType, "-> dojo.widget.manager.add");		dojo.widget.manager.add(this);		// dojo.debug(this.widgetType, "-> buildRendering");		this.buildRendering(args, fragment, parentComp);		// dojo.debug(this.widgetType, "-> initialize");		this.initialize(args, fragment, parentComp);		// dojo.debug(this.widgetType, "-> postInitialize");		this.postInitialize(args, fragment, parentComp);		// dojo.debug(this.widgetType, "-> postCreate");		this.postCreate(args, fragment, parentComp);		// dojo.debug(this.widgetType, "done!");		return this;	},	// Destroy this widget and it's descendants	destroy: function(finalize){		// FIXME: this is woefully incomplete		this.destroyChildren();		this.uninitialize();		this.destroyRendering(finalize);		dojo.widget.manager.removeById(this.widgetId);	},	// Destroy the children of this widget, and their descendents	destroyChildren: function(){		while(this.children.length > 0){			var tc = this.children[0];			this.removeChild(tc);			tc.destroy();		}	},	getChildrenOfType: function(type, recurse){		var ret = [];		var isFunc = dojo.lang.isFunction(type);		if(!isFunc){			type = type.toLowerCase();		}		for(var x=0; x<this.children.length; x++){			if(isFunc){				if(this.children[x] instanceof type){					ret.push(this.children[x]);				}			}else{				if(this.children[x].widgetType.toLowerCase() == type){					ret.push(this.children[x]);				}			}			if(recurse){				ret = ret.concat(this.children[x].getChildrenOfType(type, recurse));			}		}		return ret;	},	getDescendants: function(){		var result = [];		var stack = [this];		var elem;		while (elem = stack.pop()){			result.push(elem);			dojo.lang.forEach(elem.children, function(elem) { stack.push(elem); });		}		return result;	},	satisfyPropertySets: function(args){		// dojo.profile.start("satisfyPropertySets");		// get the default propsets for our component type		/*		var typePropSets = []; // FIXME: need to pull these from somewhere!		var localPropSets = []; // pull out propsets from the parser's return structure		// for(var x=0; x<args.length; x++){		// }		for(var x=0; x<typePropSets.length; x++){		}		for(var x=0; x<localPropSets.length; x++){		}		*/		// dojo.profile.end("satisfyPropertySets");				return args;	},	mixInProperties: function(args, frag){		if((args["fastMixIn"])||(frag["fastMixIn"])){			// dojo.profile.start("mixInProperties_fastMixIn");			// fast mix in assumes case sensitivity, no type casting, etc...			// dojo.lang.mixin(this, args);			for(var x in args){				this[x] = args[x];			}			// dojo.profile.end("mixInProperties_fastMixIn");			return;		}		// dojo.profile.start("mixInProperties");		/*		 * the actual mix-in code attempts to do some type-assignment based on		 * PRE-EXISTING properties of the "this" object. When a named property		 * of a propset is located, it is first tested to make sure that the		 * current object already "has one". Properties which are undefined in		 * the base widget are NOT settable here. The next step is to try to		 * determine type of the pre-existing property. If it's a string, the		 * property value is simply assigned. If a function, the property is		 * replaced with a "new Function()" declaration. If an Array, the		 * system attempts to split the string value on ";" chars, and no		 * further processing is attempted (conversion of array elements to a		 * integers, for instance). If the property value is an Object		 * (testObj.constructor === Object), the property is split first on ";"		 * chars, secondly on ":" chars, and the resulting key/value pairs are		 * assigned to an object in a map style. The onus is on the property		 * user to ensure that all property values are converted to the		 * expected type before usage.		 */		var undef;		// NOTE: we cannot assume that the passed properties are case-correct		// (esp due to some browser bugs). Therefore, we attempt to locate		// properties for assignment regardless of case. This may cause		// problematic assignments and bugs in the future and will need to be		// documented with big bright neon lights.		// FIXME: fails miserably if a mixin property has a default value of null in 		// a widget		// NOTE: caching lower-cased args in the prototype is only 		// acceptable if the properties are invariant.		// if we have a name-cache, get it		var lcArgs = dojo.widget.lcArgsCache[this.widgetType];		if ( lcArgs == null ){			// build a lower-case property name cache if we don't have one			lcArgs = {};			for(var y in this){				lcArgs[((new String(y)).toLowerCase())] = y;			}			dojo.widget.lcArgsCache[this.widgetType] = lcArgs;		}		var visited = {};		for(var x in args){			if(!this[x]){ // check the cache for properties				var y = lcArgs[(new String(x)).toLowerCase()];				if(y){					args[y] = args[x];					x = y; 				}			}			if(visited[x]){ continue; }			visited[x] = true;			if((typeof this[x]) != (typeof undef)){				if(typeof args[x] != "string"){					this[x] = args[x];				}else{					if(dojo.lang.isString(this[x])){						this[x] = args[x];					}else if(dojo.lang.isNumber(this[x])){						this[x] = new Number(args[x]); // FIXME: what if NaN is the result?					}else if(dojo.lang.isBoolean(this[x])){						this[x] = (args[x].toLowerCase()=="false") ? false : true;					}else if(dojo.lang.isFunction(this[x])){						// FIXME: need to determine if always over-writing instead						// of attaching here is appropriate. I suspect that we						// might want to only allow attaching w/ action items.												// RAR, 1/19/05: I'm going to attach instead of						// over-write here. Perhaps function objects could have						// some sort of flag set on them? Or mixed-into objects						// could have some list of non-mutable properties						// (although I'm not sure how that would alleviate this						// particular problem)? 						// this[x] = new Function(args[x]);						// after an IRC discussion last week, it was decided						// that these event handlers should execute in the						// context of the widget, so that the "this" pointer						// takes correctly.												// argument that contains no punctuation other than . is 						// considered a function spec, not code						if(args[x].search(/[^\w\.]+/i) == -1){							this[x] = dojo.evalObjPath(args[x], false);						}else{							var tn = dojo.lang.nameAnonFunc(new Function(args[x]), this);							dojo.event.connect(this, x, this, tn);						}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久久久综合体桃花网| 精品一区二区免费看| 色综合天天综合给合国产| 国产精品传媒在线| 91猫先生在线| 五月天激情综合网| 日韩欧美在线123| 国产美女一区二区| 最好看的中文字幕久久| 欧美吻胸吃奶大尺度电影| 午夜一区二区三区视频| 欧美一卡二卡三卡四卡| 国产美女视频一区| 亚洲女同女同女同女同女同69| 欧美日韩一区小说| 国产一区欧美日韩| 最新久久zyz资源站| 欧美日韩免费观看一区三区| 精品在线一区二区三区| 亚洲视频 欧洲视频| 欧美久久久久久久久| 国产精品99久久久| 亚洲成人一区二区| 久久久蜜臀国产一区二区| 91麻豆精品在线观看| 婷婷成人激情在线网| 国产欧美一区二区在线| 欧美少妇一区二区| 国产酒店精品激情| 亚洲一区二区三区在线播放| 日韩欧美国产1| 91视频在线观看| 久久99国产精品麻豆| 亚洲人成网站精品片在线观看| 欧美老人xxxx18| 成人免费av资源| 蜜桃精品视频在线观看| 亚洲欧美乱综合| xfplay精品久久| 色视频一区二区| 极品尤物av久久免费看| 亚洲妇熟xx妇色黄| 国产精品国产三级国产aⅴ无密码| 欧美乱熟臀69xxxxxx| eeuss鲁片一区二区三区 | 一区二区在线观看不卡| 日韩精品最新网址| 欧美性色黄大片| av亚洲精华国产精华精华 | 欧美国产精品专区| 91麻豆精品国产91久久久久久| av中文字幕在线不卡| 激情小说亚洲一区| 亚洲第一主播视频| 亚洲视频免费在线| 国产精品视频你懂的| 2023国产精华国产精品| 日韩免费高清av| 欧美老年两性高潮| 欧美日韩精品一区二区在线播放| 成人免费视频视频在线观看免费| 国产自产视频一区二区三区| 日韩av电影免费观看高清完整版在线观看| 亚洲欧美aⅴ...| 亚洲视频香蕉人妖| 自拍偷拍国产亚洲| 亚洲视频网在线直播| 最新日韩av在线| 亚洲欧洲日韩av| 综合久久一区二区三区| 国产精品沙发午睡系列990531| 久久久久久亚洲综合| 久久久综合网站| 国产欧美日韩亚州综合| 精品国产乱码久久久久久影片| 日韩视频在线观看一区二区| 在线播放91灌醉迷j高跟美女| 欧洲精品一区二区三区在线观看| 色综合视频在线观看| 色综合视频一区二区三区高清| heyzo一本久久综合| 97久久精品人人做人人爽| 97精品视频在线观看自产线路二| 99久久久国产精品免费蜜臀| 91丨九色丨黑人外教| 色偷偷88欧美精品久久久| 91捆绑美女网站| 在线观看一区二区精品视频| 欧美日韩国产首页| 日韩一区二区三区在线观看| 久久先锋影音av| 国产拍欧美日韩视频二区| 中文字幕中文字幕一区| 亚洲免费观看高清完整版在线观看 | 久久综合丝袜日本网| 久久精品欧美日韩精品| 国产精品福利影院| 亚洲午夜影视影院在线观看| 日韩国产在线观看一区| 国产一区二区不卡老阿姨| eeuss鲁片一区二区三区在线看| 97久久人人超碰| 欧美精品在欧美一区二区少妇| 日韩免费观看2025年上映的电影| 国产日韩av一区二区| 玉米视频成人免费看| 日本三级韩国三级欧美三级| 国产成人亚洲精品狼色在线| 91视频.com| 欧美男女性生活在线直播观看| 2020日本不卡一区二区视频| 亚洲视频免费观看| 美女视频网站黄色亚洲| av电影一区二区| 欧美一区二区三区啪啪| 国产精品久久久久一区二区三区 | 欧美区视频在线观看| 国产亚洲精品7777| 亚洲成av人片在线观看| 国产精品资源在线| 欧美日韩在线播放三区| 中文字幕免费一区| 日韩电影在线一区| 99热国产精品| 精品国产一区二区在线观看| 亚洲精品国产精品乱码不99| 国产乱色国产精品免费视频| 欧美日韩中字一区| 国产精品久久久99| 久久66热re国产| 欧美在线一区二区| 国产精品卡一卡二卡三| 男女性色大片免费观看一区二区| 91日韩一区二区三区| 久久综合狠狠综合久久综合88| 亚洲高清不卡在线| 91免费国产在线| 久久久久久久久99精品| 日韩成人精品在线观看| 欧美在线观看一二区| 中文字幕亚洲一区二区va在线| 九色porny丨国产精品| 欧美日韩美少妇 | 亚洲国产中文字幕在线视频综合| 国产成人丝袜美腿| 精品国产乱码久久久久久图片 | 本田岬高潮一区二区三区| 精品美女一区二区三区| 亚洲电影你懂得| 色哟哟在线观看一区二区三区| 国产午夜精品一区二区| 国产一区在线不卡| 精品久久一区二区| 蜜臀久久久久久久| 欧美一区二区日韩| 日韩精品欧美精品| 欧美日韩一区二区三区在线看| 日韩美女视频19| 99视频精品免费视频| 国产精品每日更新| 波多野洁衣一区| 亚洲欧洲国产日本综合| av一本久道久久综合久久鬼色| 欧美激情一区在线观看| 国产aⅴ综合色| 欧美国产一区二区在线观看| 国产精品1024| 欧美激情在线一区二区| 成人h动漫精品一区二区| 国产精品丝袜91| 9i看片成人免费高清| 亚洲人成网站在线| 色综合咪咪久久| 亚洲国产精品欧美一二99 | 日韩精品中文字幕在线不卡尤物| 日韩精品国产精品| 欧美一区二区在线免费播放| 男人的j进女人的j一区| 精品国产91乱码一区二区三区 | 国产xxx精品视频大全| 亚洲国产精品av| 色综合视频在线观看| 午夜欧美一区二区三区在线播放| 欧美性一二三区| 麻豆精品一区二区三区| 久久久精品欧美丰满| 99精品视频一区二区三区| 一区二区三区不卡在线观看| 欧美日本精品一区二区三区| 久久黄色级2电影| 国产欧美日韩另类视频免费观看| 99免费精品在线观看| 婷婷久久综合九色综合绿巨人| 日韩午夜在线观看| 国产白丝精品91爽爽久久| 玉足女爽爽91| 欧美精品一区二区三区视频| 粉嫩蜜臀av国产精品网站| 一区二区三区四区中文字幕| 91精品国产91久久久久久一区二区 |