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

📄 xajax_uncompressed.js

📁 PHP+Ajax网站开发典型实例
💻 JS
📖 第 1 页 / 共 2 页
字号:
/* xajax Javascript library :: version 0.2.5 */function Xajax(){	this.arrayContainsValue = function(array, valueToCheck)	{		for (i in array) {			if (array[i] == valueToCheck) return true;		}		return false;
	};
	this.DebugMessage = function(text)	{		if (text.length > 1000) text = text.substr(0,1000)+"...\n[long response]\n...";		try {			if (this.debugWindow == undefined || this.debugWindow.closed == true) {				this.debugWindow = window.open('about:blank', 'xajax-debug', 'width=800,height=600,scrollbars=1,resizable,status');				this.debugWindow.document.write('<html><head><title>Xajax debug output</title></head><body><h2>Xajax debug output</h2><div id="debugTag"></div></body></html>');			}			debugTag = this.debugWindow.document.getElementById('debugTag');			if (!debugTag)				throw new Error();			text = text.replace(/&/g, "&amp;");			text = text.replace(/</g, "&lt;");			text = text.replace(/>/g, "&gt;");			debugTag.innerHTML = ('<b>'+(new Date()).toString()+'</b>: ' + text + '<hr/>') + debugTag.innerHTML;		} catch (e) {			alert("Xajax Debug:\n " + text);		}	};		this.workId = 'xajaxWork'+ new Date().getTime();	this.depth = 0;	this.responseErrorsForAlert = ["400","401","402","403","404","500","501","502","503"];		//Get the XMLHttpRequest Object	this.getRequestObject = function()	{		if (xajaxDebug) this.DebugMessage("Initializing Request Object..");		var req = null;		if (typeof XMLHttpRequest != "undefined")			req = new XMLHttpRequest();		if (!req && typeof ActiveXObject != "undefined")		{			try			{				req=new ActiveXObject("Msxml2.XMLHTTP");				XMLHttpRequest = function(){return new ActiveXObject("Msxml2.XMLHTTP");}			}			catch (e)			{				try				{					req=new ActiveXObject("Microsoft.XMLHTTP");					XMLHttpRequest = function(){return new ActiveXObject("Microsoft.XMLHTTP");}				}				catch (e2)				{					try {						req=new ActiveXObject("Msxml2.XMLHTTP.4.0");						XMLHttpRequest = function(){return new ActiveXObject("Msxml2.XMLHTTP.4.0");}					}					catch (e3)					{						req=null;					}				}			}		}		if(!req && window.createRequest)			req = window.createRequest();				if (!req) this.DebugMessage("Request Object Instantiation failed.");					return req;	}	// xajax.$() is shorthand for document.getElementById()	this.$ = function(sId)	{		if (!sId) {			return null;		}		var returnObj = document.getElementById(sId);		if (!returnObj && document.all) {			returnObj = document.all[sId];		}		if (xajaxDebug && !returnObj && sId != this.workId) {			this.DebugMessage("Element with the id \"" + sId + "\" not found.");		}		return returnObj;	}		// xajax.include(sFileName) dynamically includes an external javascript file	this.include = function(sFileName)	{		var objHead = document.getElementsByTagName('head');		var objScript = document.createElement('script');		objScript.type = 'text/javascript';		objScript.src = sFileName;		objHead[0].appendChild(objScript);	}		this.stripOnPrefix = function(sEventName)	{		sEventName = sEventName.toLowerCase();		if (sEventName.indexOf('on') == 0)		{			sEventName = sEventName.replace(/on/,'');		}				return sEventName;	}		this.addOnPrefix = function(sEventName)	{		sEventName = sEventName.toLowerCase();		if (sEventName.indexOf('on') != 0)		{			sEventName = 'on' + sEventName;		}				return sEventName;	}		// xajax.addHandler adds an event handler to an element	this.addHandler = function(sElementId, sEvent, sFunctionName)	{		if (window.addEventListener)		{			sEvent = this.stripOnPrefix(sEvent);			eval("this.$('"+sElementId+"').addEventListener('"+sEvent+"',"+sFunctionName+",false);");		}		else if (window.attachEvent)		{			sAltEvent = this.addOnPrefix(sEvent);			if (eval("this.$('"+sElementId+"').attachEvent('"+sAltEvent+"',"+sFunctionName+");"))				window.attachEvent('onunload', 					eval("function(){xajax.$('"+sElementId+"').detachEvent('"+sAltEvent+"',"+sFunctionName+");}"));		}		else		{			sAltEvent = this.addOnPrefix(sEvent);			eval("this.$('"+sElementId+"')."+sAltEvent+" = "+sFunctionName);		}	}		// xajax.removeHandler removes an event handler from an element	this.removeHandler = function(sElementId, sEvent, sFunctionName)	{		if (window.removeEventListener)		{			sEvent = this.stripOnPrefix(sEvent);			eval("this.$('"+sElementId+"').removeEventListener('"+sEvent+"',"+sFunctionName+",false);");		}		else if (window.detachEvent)		{			sAltEvent = this.addOnPrefix(sEvent);			try {				eval("this.$('"+sElementId+"').detachEvent('"+sAltEvent+"',"+sFunctionName+");");			} catch (ignore) {}		}		else		{			sAltEvent = this.addOnPrefix(sEvent);			eval("this.$('"+sElementId+"')."+sAltEvent+" = null");
		}	}		// xajax.create creates a new child node under a parent	this.create = function(sParentId, sTag, sId)	{		var objParent = this.$(sParentId);		objElement = document.createElement(sTag);		objElement.setAttribute('id',sId);		if (objParent)			objParent.appendChild(objElement);	}		// xajax.insert inserts a new node before another node	this.insert = function(sBeforeId, sTag, sId)	{		var objSibling = this.$(sBeforeId);		objElement = document.createElement(sTag);		objElement.setAttribute('id',sId);		objSibling.parentNode.insertBefore(objElement, objSibling);	}	// xajax.insertAfter inserts a new node after another node	this.insertAfter = function(sAfterId, sTag, sId)	{		var objSibling = this.$(sAfterId);		objElement = document.createElement(sTag);		objElement.setAttribute('id',sId);		objSibling.parentNode.insertBefore(objElement, objSibling.nextSibling);	}		this.getInput = function(sType, sName, sId)	{		var Obj;		if (!window.addEventListener)		{			Obj = document.createElement('<input type="'+sType+'" id="'+sId+'" name="'+sName+'">');		}		else		{			Obj = document.createElement('input');			Obj.setAttribute('type',sType);			Obj.setAttribute('name',sName);			Obj.setAttribute('id',sId);		}		return Obj;	}		// xajax.createInput creates a new input node under a parent	this.createInput = function(sParentId, sType, sName, sId)	{		var objParent = this.$(sParentId);		var objElement = this.getInput(sType, sName, sId);		if (objParent && objElement)			objParent.appendChild(objElement);	}		// xajax.insertInput creates a new input node before another node	this.insertInput = function(sBeforeId, sType, sName, sId)	{		var objSibling = this.$(sBeforeId);		var objElement = this.getInput(sType, sName, sId);		if (objElement && objSibling && objSibling.parentNode)			objSibling.parentNode.insertBefore(objElement, objSibling);	}	// xajax.insertInputAfter creates a new input node after another node	this.insertInputAfter = function(sAfterId, sType, sName, sId)	{		var objSibling = this.$(sAfterId);		var objElement = this.getInput(sType, sName, sId);		if (objElement && objSibling && objSibling.parentNode) {			objSibling.parentNode.insertBefore(objElement, objSibling.nextSibling);		}	}			// xajax.remove deletes an element	this.remove = function(sId)	{		objElement = this.$(sId);		if (objElement && objElement.parentNode && objElement.parentNode.removeChild)		{			objElement.parentNode.removeChild(objElement);		}	}		//xajax.replace searches for text in an attribute of an element and replaces it	//with a different text	this.replace = function(sId,sAttribute,sSearch,sReplace)	{		var bFunction = false;				if (sAttribute == "innerHTML")			sSearch = this.getBrowserHTML(sSearch);				eval("var txt=this.$('"+sId+"')."+sAttribute);		if (typeof txt == "function")        {            txt = txt.toString();            bFunction = true;        }		if (txt.indexOf(sSearch)>-1)		{			var newTxt = '';			while (txt.indexOf(sSearch) > -1)			{				x = txt.indexOf(sSearch)+sSearch.length+1;				newTxt += txt.substr(0,x).replace(sSearch,sReplace);				txt = txt.substr(x,txt.length-x);			}			newTxt += txt;			if (bFunction)			{				eval('this.$("'+sId+'").'+sAttribute+'=newTxt;');			}			else if (this.willChange(sId,sAttribute,newTxt))			{				eval('this.$("'+sId+'").'+sAttribute+'=newTxt;');			}		}	}		// xajax.getFormValues() builds a query string XML message from the elements of a form object	// * The first argument is the id of the form	// * The second argument (optional) can be set to true if you want to submit disabled elements	// * The third argument (optional) allows you to specify a string prefix that a form element	//   name must contain if you want that element to be submitted	this.getFormValues = function(frm)	{		var objForm;		var submitDisabledElements = false;		if (arguments.length > 1 && arguments[1] == true)			submitDisabledElements = true;		var prefix="";		if(arguments.length > 2)			prefix = arguments[2];				if (typeof(frm) == "string")			objForm = this.$(frm);		else			objForm = frm;		var sXml = "<xjxquery><q>";		if (objForm && objForm.tagName.toUpperCase() == 'FORM')		{			var formElements = objForm.elements;			for( var i=0; i < formElements.length; i++)			{				if (!formElements[i].name)					continue;				if (formElements[i].name.substring(0, prefix.length) != prefix)					continue;				if (formElements[i].type && (formElements[i].type == 'radio' || formElements[i].type == 'checkbox') && formElements[i].checked == false)					continue;				if (formElements[i].disabled && formElements[i].disabled == true && submitDisabledElements == false)					continue;				var name = formElements[i].name;				if (name)				{					if (sXml != '<xjxquery><q>')						sXml += '&';					if(formElements[i].type=='select-multiple')					{						for (var j = 0; j < formElements[i].length; j++)						{							if (formElements[i].options[j].selected == true)								sXml += name+"="+encodeURIComponent(formElements[i].options[j].value)+"&";						}					}					else					{						sXml += name+"="+encodeURIComponent(formElements[i].value);					}				} 			}		}				sXml +="</q></xjxquery>";				return sXml;	}		// Generates an XML message that xajax can understand from a javascript object	this.objectToXML = function(obj)	{		var sXml = "<xjxobj>";		for (i in obj)		{			try			{				if (i == 'constructor')					continue;				if (obj[i] && typeof(obj[i]) == 'function')					continue;									var key = i;				var value = obj[i];				if (value && typeof(value)=="object" && this.depth <= 50)				{					this.depth++;					value = this.objectToXML(value);					this.depth--;				}								sXml += "<e><k>"+key+"</k><v>"+value+"</v></e>";							}			catch(e)			{				if (xajaxDebug) this.DebugMessage(e.name+": "+e.message);			}		}		sXml += "</xjxobj>";			return sXml;	}	// unserializes data structure from xajaxResponse::_buildObjXml()	this._nodeToObject = function(node) {		if (!node)			return '';		// parentNode here is weird, have to tune		if (node.nodeName == '#cdata-section' || node.nodeName == '#text') {			var data = "";			for (var j=0; j<node.parentNode.childNodes.length; j++) {				data += node.parentNode.childNodes[j].data;			}			return data;		}		else if (node.nodeName == 'xjxobj') {			var data = new Array();			for (var j=0; j<node.childNodes.length; j++) {				var child = node.childNodes[j];				var key;				var value;				if (child.nodeName == 'e') {					for (var k=0; k<child.childNodes.length; k++) {						if (child.childNodes[k].nodeName == 'k') {							key = child.childNodes[k].firstChild.data;						}						else if (child.childNodes[k].nodeName == 'v') {							value = this._nodeToObject(child.childNodes[k].firstChild);						}

⌨️ 快捷键说明

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