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

📄 parse.js

📁 初学者
💻 JS
字号:
/*	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.Parse");dojo.require("dojo.widget.Manager");dojo.require("dojo.dom");dojo.widget.Parse = function (fragment) {	this.propertySetsList = [];	this.fragment = fragment;	this.createComponents = function (frag, parentComp) {		var comps = [];		var built = false;		try {			if (frag && frag.tagName && (frag != frag.nodeRef)) {				var djTags = dojo.widget.tags;				var tna = String(frag.tagName).split(";");				for (var x = 0; x < tna.length; x++) {					var ltn = tna[x].replace(/^\s+|\s+$/g, "").toLowerCase();					frag.tagName = ltn;					var ret;					if (djTags[ltn]) {						built = true;						ret = djTags[ltn](frag, this, parentComp, frag.index);						comps.push(ret);					} else {						if (ltn.indexOf(":") == -1) {							ltn = "dojo:" + ltn;						}						ret = dojo.widget.buildWidgetFromParseTree(ltn, frag, this, parentComp, frag.index);						if (ret) {							built = true;							comps.push(ret);						}					}				}			}		}		catch (e) {			dojo.debug("dojo.widget.Parse: error:", e);		}		if (!built) {			comps = comps.concat(this.createSubComponents(frag, parentComp));		}		return comps;	};	this.createSubComponents = function (fragment, parentComp) {		var frag, comps = [];		for (var item in fragment) {			frag = fragment[item];			if (frag && typeof frag == "object" && (frag != fragment.nodeRef) && (frag != fragment.tagName) && (!dojo.dom.isNode(frag))) {				comps = comps.concat(this.createComponents(frag, parentComp));			}		}		return comps;	};	this.parsePropertySets = function (fragment) {		return [];	};	this.parseProperties = function (fragment) {		var properties = {};		for (var item in fragment) {			if ((fragment[item] == fragment.tagName) || (fragment[item] == fragment.nodeRef)) {			} else {				var frag = fragment[item];				if (frag.tagName && dojo.widget.tags[frag.tagName.toLowerCase()]) {				} else {					if (frag[0] && frag[0].value != "" && frag[0].value != null) {						try {							if (item.toLowerCase() == "dataprovider") {								var _this = this;								this.getDataProvider(_this, frag[0].value);								properties.dataProvider = this.dataProvider;							}							properties[item] = frag[0].value;							var nestedProperties = this.parseProperties(frag);							for (var property in nestedProperties) {								properties[property] = nestedProperties[property];							}						}						catch (e) {							dojo.debug(e);						}					}				}				switch (item.toLowerCase()) {				  case "checked":				  case "disabled":					if (typeof properties[item] != "boolean") {						properties[item] = true;					}					break;				}			}		}		return properties;	};	this.getDataProvider = function (objRef, dataUrl) {		dojo.io.bind({url:dataUrl, load:function (type, evaldObj) {			if (type == "load") {				objRef.dataProvider = evaldObj;			}		}, mimetype:"text/javascript", sync:true});	};	this.getPropertySetById = function (propertySetId) {		for (var x = 0; x < this.propertySetsList.length; x++) {			if (propertySetId == this.propertySetsList[x]["id"][0].value) {				return this.propertySetsList[x];			}		}		return "";	};	this.getPropertySetsByType = function (componentType) {		var propertySets = [];		for (var x = 0; x < this.propertySetsList.length; x++) {			var cpl = this.propertySetsList[x];			var cpcc = cpl.componentClass || cpl.componentType || null;			var propertySetId = this.propertySetsList[x]["id"][0].value;			if (cpcc && (propertySetId == cpcc[0].value)) {				propertySets.push(cpl);			}		}		return propertySets;	};	this.getPropertySets = function (fragment) {		var ppl = "dojo:propertyproviderlist";		var propertySets = [];		var tagname = fragment.tagName;		if (fragment[ppl]) {			var propertyProviderIds = fragment[ppl].value.split(" ");			for (var propertySetId in propertyProviderIds) {				if ((propertySetId.indexOf("..") == -1) && (propertySetId.indexOf("://") == -1)) {					var propertySet = this.getPropertySetById(propertySetId);					if (propertySet != "") {						propertySets.push(propertySet);					}				} else {				}			}		}		return this.getPropertySetsByType(tagname).concat(propertySets);	};	this.createComponentFromScript = function (nodeRef, componentName, properties, ns) {		properties.fastMixIn = true;		var ltn = (ns || "dojo") + ":" + componentName.toLowerCase();		if (dojo.widget.tags[ltn]) {			return [dojo.widget.tags[ltn](properties, this, null, null, properties)];		}		return [dojo.widget.buildWidgetFromParseTree(ltn, properties, this, null, null, properties)];	};};dojo.widget._parser_collection = {"dojo":new dojo.widget.Parse()};dojo.widget.getParser = function (name) {	if (!name) {		name = "dojo";	}	if (!this._parser_collection[name]) {		this._parser_collection[name] = new dojo.widget.Parse();	}	return this._parser_collection[name];};dojo.widget.createWidget = function (name, props, refNode, position) {	var isNode = false;	var isNameStr = (typeof name == "string");	if (isNameStr) {		var pos = name.indexOf(":");		var ns = (pos > -1) ? name.substring(0, pos) : "dojo";		if (pos > -1) {			name = name.substring(pos + 1);		}		var lowerCaseName = name.toLowerCase();		var namespacedName = ns + ":" + lowerCaseName;		isNode = (dojo.byId(name) && !dojo.widget.tags[namespacedName]);	}	if ((arguments.length == 1) && (isNode || !isNameStr)) {		var xp = new dojo.xml.Parse();		var tn = isNode ? dojo.byId(name) : name;		return dojo.widget.getParser().createComponents(xp.parseElement(tn, null, true))[0];	}	function fromScript(placeKeeperNode, name, props, ns) {		props[namespacedName] = {dojotype:[{value:lowerCaseName}], nodeRef:placeKeeperNode, fastMixIn:true};		props.ns = ns;		return dojo.widget.getParser().createComponentFromScript(placeKeeperNode, name, props, ns);	}	props = props || {};	var notRef = false;	var tn = null;	var h = dojo.render.html.capable;	if (h) {		tn = document.createElement("span");	}	if (!refNode) {		notRef = true;		refNode = tn;		if (h) {			dojo.body().appendChild(refNode);		}	} else {		if (position) {			dojo.dom.insertAtPosition(tn, refNode, position);		} else {			tn = refNode;		}	}	var widgetArray = fromScript(tn, name.toLowerCase(), props, ns);	if ((!widgetArray) || (!widgetArray[0]) || (typeof widgetArray[0].widgetType == "undefined")) {		throw new Error("createWidget: Creation of \"" + name + "\" widget failed.");	}	try {		if (notRef && widgetArray[0].domNode.parentNode) {			widgetArray[0].domNode.parentNode.removeChild(widgetArray[0].domNode);		}	}	catch (e) {		dojo.debug(e);	}	return widgetArray[0];};

⌨️ 快捷键说明

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