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

📄 userdata.js

📁 JSVM核心类库,收集了JAVA进行JSVM开发必用技术进行归纳,在实际项目应用中直接引用相关类库即可现实JSVM相关功能!
💻 JS
字号:
// Description: js.io.UserData 客户端的数据存储对象
// Author:	Changhua.Wan
// Version:	2004.03.06.01


_package("js.io");

_import("js.io.DataContext");

function js.io.UserData(name) {
	js.io.UserData._base.call(this);
	this.name = js.io.UserData.formatName(name);
	this.expires = new Date(2077, 12, 4).toUTCString();
	this.element = null;
	this.isLoaded = false;
	this.isSaved = false;
};

var _p = js.io.UserData._implements("js.io.DataContext");
var _c = js.io.UserData;

// UserData 池
_c.pool = new function() {
	var freeUDSources = new Array();
	this.getUDSource = function() {
		var _uds = null;
		if (freeUDSources.length > 0) {
			var l = freeUDSources.length;
			_uds = freeUDSources[l - 1];
			freeUDSources.length = l - 1;
		} else {
			_uds = document.createElement("meta");
			_uds.addBehavior("#default#userdata");
			document.getElementsByTagName("head")[0].appendChild(_uds);
		}
		return _uds;
	}
	this.freeUDSource = function(_uds) {
		var l = freeUDSources.length;
		freeUDSources[l] = _uds;
		freeUDSources.length = l + 1;
	}
}
_c.map = new ActiveXObject("Scripting.Dictionary");

_c.formatName = function(_name) {
	if (_name == null) return "NULL";
	return _name.replace(/(\/)|(\\)|@|&|%|(\.)|,|(\")|'|:/gi, "_");

};

_c.getInstance = function(name) {
	try {
		var map = js.io.UserData.map;
		if (!map.Exists(name)) map.Add(name, new js.io.UserData(name));
		var ud = map.Item(name);
		return ud;
	} catch(ex) {
		_throw(0x1101, "js.io.UserData/getInstance():异常{" + ex.description + "}");
	} 
};
_p.setStringValue = function(_name, _value) {
	try {
		_name = js.io.UserData.formatName(_name);
		if (null != _value)
			this.element.setAttribute(_name, _value);
		else
			this.remove(_name);
		this.isSaved = false;
	} catch(ex) {
		_throw(0x1102, "js.io.UserData/setStringValue():异常{" + ex.description + "}");
	}
};
_p.getStringValue = function(_name) {
	if (this.element == null) _throw(0x1103, "js.io.UserData/getStringValue():异常{UserData 资源尚未打开!}");
	_name = js.io.UserData.formatName(_name);
	return this.element.getAttribute(_name);
};
_p.remove = function(_name) {
	if (this.element == null) _throw(0x1104, "js.io.UserData/remove():异常{UserData 资源尚未打开!}");
	_name = js.io.UserData.formatName(_name);
	this.element.removeAttribute(_name);
};
_p.removeAll = function() {
	if (this.element == null) _throw(0x1105, "js.io.UserData/removeAll():异常{UserData 资源尚未打开!}");
	var root = this.getXMLDocument().documentElement;
	var atts = root.attributes;
	for (var i = 0; i < atts.length; i++) {
		this.remove(atts.item(i).nodeName);
	}
};
_p.open = function() {
	if (this.element == null) {
		this.element = js.io.UserData.pool.getUDSource();
	}	
}
_p.close = function() {
	if (this.element != null) {
		js.io.UserData.pool.freeUDSource(this.element);
		this.element = null;
	}
}
_p.load = function() {
	try {
		if (this.element == null) _throw(0x1106, "js.io.UserData/load():异常{UserData 资源尚未打开!}");
		this.element.load(this.name);
		this.isLoaded = true;
	} catch(ex) {
		//ex.printStackTrace();
	}
};
_p.save = function() {
	try {
		if (this.element == null) _throw(0x1107, "js.io.UserData/load():异常{UserData 资源尚未打开!}");
		this.element.expires = this.expires;
		this.element.save(this.name);
		this.isSaved = true;
	} catch(ex) {
		//ex.printStackTrace();
	}
};
_p.getXMLDocument = function() {
	if (this.element != null)
		return this.element.XMLDocument;
	else
		return null;
};

⌨️ 快捷键说明

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