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

📄 test_storage.js

📁 ajax框架原吗,dojo目前很流行的,希望大家多多学习啊
💻 JS
字号:
dojo.require("dojox.storage");var TestStorage = {	currentProvider: "default",	currentNamespace: dojox.storage.DEFAULT_NAMESPACE,		initialize: function(){		//console.debug("test_storage.initialize()");				// do we even have a storage provider?		if(dojox.storage.manager.available == false){			alert("No storage provider is available on this browser");			return;		}				// clear out old values and enable input forms		dojo.byId("storageNamespace").value = this.currentNamespace;		dojo.byId("storageNamespace").disabled = false;		dojo.byId("storageKey").value = "";		dojo.byId("storageKey").disabled = false;		dojo.byId("storageValue").value = "";		dojo.byId("storageValue").disabled = false;				// write out our available namespaces		this._printAvailableNamespaces();				// write out our available keys		this._printAvailableKeys();				// initialize our event handlers		var namespaceDirectory = dojo.byId("namespaceDirectory");		dojo.connect(namespaceDirectory, "onchange", this, this.namespaceChange);		var directory = dojo.byId("directory");		dojo.connect(directory, "onchange", this, this.directoryChange);		var storageValueElem = dojo.byId("storageValue");		dojo.connect(storageValueElem, "onkeyup", this, this.printValueSize);				// make the directory be unselected if the key name field gets focus		var keyNameField = dojo.byId("storageKey");		dojo.connect(keyNameField, "onfocus", function(evt){			directory.selectedIndex = -1;		}); 													 		// add onclick listeners to all of our buttons		var buttonContainer = dojo.byId("buttonContainer");		var currentChild = buttonContainer.firstChild;		while(currentChild.nextSibling != null){			if(currentChild.nodeType == 1){				var buttonName = currentChild.id;				var functionName = buttonName.match(/^(.*)Button$/)[1];				dojo.connect(currentChild, "onclick", this, this[functionName]);				currentChild.disabled = false;			}								currentChild = currentChild.nextSibling;		}				// print out metadata		this._printProviderMetadata();				// disable the configuration button if none is supported for this provider		if(dojox.storage.hasSettingsUI() == false){			dojo.byId("configureButton").disabled = true;			}	},		namespaceChange: function(evt){		var ns = evt.target.value;		this.currentNamespace = ns;				// update our available keys		this._printAvailableKeys();				// clear out our key and values		dojo.byId("storageNamespace").value = this.currentNamespace;		dojo.byId("storageKey").value = "";		dojo.byId("storageValue").value = "";	},		directoryChange: function(evt){		var key = evt.target.value;				// add this value into the form		var keyNameField = dojo.byId("storageKey");		keyNameField.value = key;				this._handleLoad(key);			},		load: function(evt){		// cancel the button's default behavior		evt.preventDefault();		evt.stopPropagation();				// get the key to load		var key = dojo.byId("storageKey").value;				if(key == null || typeof key == "undefined" || key == ""){			alert("Please enter a key name");			return;		}				this._handleLoad(key);	},		save: function(evt){		// cancel the button's default behavior		evt.preventDefault();		evt.stopPropagation();				// get the new values		var key = dojo.byId("storageKey").value;		var value = dojo.byId("storageValue").value;		var namespace = dojo.byId("storageNamespace").value;				if(key == null || typeof key == "undefined" || key == ""){			alert("Please enter a key name");			return;		}				if(value == null || typeof value == "undefined" || value == ""){			alert("Please enter a key value");			return;		}				// print out the size of the value		this.printValueSize(); 				// do the save		this._save(key, value, namespace);	},		clearNamespace: function(evt){		// cancel the button's default behavior		evt.preventDefault();		evt.stopPropagation();				dojox.storage.clear(this.currentNamespace);				this._printAvailableNamespaces();		this._printAvailableKeys();	},		configure: function(evt){		// cancel the button's default behavior		evt.preventDefault();		evt.stopPropagation();				if(dojox.storage.hasSettingsUI()){			// redraw our keys after the dialog is closed, in			// case they have all been erased			var self = this;			dojox.storage.onHideSettingsUI = function(){				self._printAvailableKeys();			}						// show the dialog			dojox.storage.showSettingsUI();		}	},		remove: function(evt){		// cancel the button's default behavior		evt.preventDefault();		evt.stopPropagation();				// determine what key to delete; if the directory has a selected value,		// use that; otherwise, use the key name field		var directory = dojo.byId("directory");		var keyNameField = dojo.byId("storageKey");		var keyValueField = dojo.byId("storageValue");		var key;		if(directory.selectedIndex != -1){			key = directory.value;			// delete this option			var options = directory.childNodes;			for(var i = 0; i < options.length; i++){				if(options[i].nodeType == 1 &&					 options[i].value == key){					directory.removeChild(options[i]);					break;				}			}		}else{			key = keyNameField.value;		}				keyNameField.value = "";		keyValueField.value = "";				// now delete the value		this._printStatus("Removing '" + key + "'...");		if(this.currentNamespace == dojox.storage.DEFAULT_NAMESPACE){			dojox.storage.remove(key);		}else{			dojox.storage.remove(key, this.currentNamespace);		}				// update our UI		this._printAvailableNamespaces();		this._printStatus("Removed '" + key);	},		printValueSize: function(){		var storageValue = dojo.byId("storageValue").value;		var size = 0;		if(storageValue != null && typeof storageValue != "undefined"){			size = storageValue.length;		}				// determine the units we are dealing with		var units;		if(size < 1024)			units = " bytes";		else{			units = " K";			size = size / 1024;			size = Math.round(size);		}				size = size + units;				var valueSize = dojo.byId("valueSize");		valueSize.innerHTML = size;	},		saveBook: function(evt){		this._printStatus("Loading book...");				var d = dojo.xhrGet({			url: "resources/testBook.txt",			handleAs: "text"		});				d.addCallback(dojo.hitch(this, function(results){			this._printStatus("Book loaded");			this._save("testBook", results);		}));				d.addErrback(dojo.hitch(this, function(error){ 			alert("Unable to load testBook.txt: " + error);		}));				if(!typeof evt != "undefined" && evt != null){			evt.preventDefault();			evt.stopPropagation();		}				return false;	},		saveXML: function(evt){		this._printStatus("Loading XML...");				var d = dojo.xhrGet({			url: "resources/testXML.xml",			handleAs: "text"		});				d.addCallback(dojo.hitch(this, function(results){			this._printStatus("XML loaded");			this._save("testXML", results);		}));				d.addErrback(dojo.hitch(this, function(error){ 			alert("Unable to load testXML.xml: " + error);		}));				if(!typeof evt != "undefined" && evt != null){			evt.preventDefault();			evt.stopPropagation();		}				return false;	},		_save: function(key, value, namespace){		this._printStatus("Saving '" + key + "'...");		var self = this;		var saveHandler = function(status, keyName){			if(status == dojox.storage.FAILED){				alert("You do not have permission to store data for this web site. "			        + "Press the Configure button to grant permission.");			}else if(status == dojox.storage.SUCCESS){				// clear out the old value				dojo.byId("storageKey").value = "";				dojo.byId("storageValue").value = "";				self._printStatus("Saved '" + key + "'");								if(typeof namespace != "undefined"					&& namespace != null){					self.currentNamespace = namespace;				}								// update the list of available keys and namespaces				// put this on a slight timeout, because saveHandler is called back				// from Flash, which can cause problems in Flash 8 communication				// which affects Safari				// FIXME: Find out what is going on in the Flash 8 layer and fix it				// there				window.setTimeout(function(){ 					self._printAvailableKeys();					self._printAvailableNamespaces();				}, 1);			}		};				try{			if(namespace == dojox.storage.DEFAULT_NAMESPACE){				dojox.storage.put(key, value, saveHandler);			}else{				dojox.storage.put(key, value, saveHandler, namespace);			}		}catch(exp){			alert(exp);		}	},		_printAvailableKeys: function(){		var directory = dojo.byId("directory");				// clear out any old keys		directory.innerHTML = "";				// add new ones		var availableKeys;		if(this.currentNamespace == dojox.storage.DEFAULT_NAMESPACE){			availableKeys = dojox.storage.getKeys();		}else{			availableKeys = dojox.storage.getKeys(this.currentNamespace);		}				for (var i = 0; i < availableKeys.length; i++){			var optionNode = document.createElement("option");			optionNode.appendChild(document.createTextNode(availableKeys[i]));			optionNode.value = availableKeys[i];			directory.appendChild(optionNode);		}	},		_printAvailableNamespaces: function(){		var namespacesDir = dojo.byId("namespaceDirectory");				// clear out any old namespaces		namespacesDir.innerHTML = "";				// add new ones		var availableNamespaces = dojox.storage.getNamespaces();				for (var i = 0; i < availableNamespaces.length; i++){			var optionNode = document.createElement("option");			optionNode.appendChild(document.createTextNode(availableNamespaces[i]));			optionNode.value = availableNamespaces[i];			namespacesDir.appendChild(optionNode);		}	},		_handleLoad: function(key){		this._printStatus("Loading '" + key + "'...");				// get the value		var results;		if(this.currentNamespace == dojox.storage.DEFAULT_NAMESPACE){			results = dojox.storage.get(key);		}else{			results = dojox.storage.get(key, this.currentNamespace);		}				// jsonify it if it is a JavaScript object		if(typeof results != "string"){			results = dojo.toJson(results);		}				// print out its value		this._printStatus("Loaded '" + key + "'");		dojo.byId("storageValue").value = results;				// print out the size of the value		this.printValueSize(); 	},		_printProviderMetadata: function(){		var storageType = dojox.storage.manager.currentProvider.declaredClass;		var isSupported = dojox.storage.isAvailable();		var maximumSize = dojox.storage.getMaximumSize();		var permanent = dojox.storage.isPermanent();		var uiConfig = dojox.storage.hasSettingsUI();		var moreInfo = "";		if(dojox.storage.manager.currentProvider.declaredClass 				== "dojox.storage.FlashStorageProvider"){			moreInfo = "Flash Comm Version " + dojo.flash.info.commVersion;		}				dojo.byId("currentStorageProvider").innerHTML = storageType;		dojo.byId("isSupported").innerHTML = isSupported;		dojo.byId("isPersistent").innerHTML = permanent;		dojo.byId("hasUIConfig").innerHTML = uiConfig;		dojo.byId("maximumSize").innerHTML = maximumSize;		dojo.byId("moreInfo").innerHTML = moreInfo;	},		_printStatus: function(message){		// remove the old status		var top = dojo.byId("top");		for (var i = 0; i < top.childNodes.length; i++){			var currentNode = top.childNodes[i];			if (currentNode.nodeType == 1 &&					currentNode.className == "status"){				top.removeChild(currentNode);			}				}				var status = document.createElement("span");		status.className = "status";		status.innerHTML = message;				top.appendChild(status);		dojo.fadeOut({node: status, duration: 2000}).play();	}};// wait until the storage system is finished loadingif(dojox.storage.manager.isInitialized() == false){ // storage might already be loaded when we get here	dojo.connect(dojox.storage.manager, "loaded", TestStorage, TestStorage.initialize);}else{	dojo.connect(dojo, "loaded", TestStorage, TestStorage.initialize);}

⌨️ 快捷键说明

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