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

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

?? scriptsrcio.js

?? 圖書管理系統(tǒng)包括圖書的增加、刪除、修改等功能
?? 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.io.ScriptSrcIO");dojo.require("dojo.io.BrowserIO");dojo.require("dojo.undo.browser");//FIXME: should constantParams be JS object?//FIXME: check dojo.io calls. Can we move the BrowserIO defined calls somewhere//       else so that we don't depend on BrowserIO at all? The dependent calls//       have to do with dealing with forms and making query params from JS object./** * See test_ScriptSrcIO.html for usage information. * Notes: * - The watchInFlight timer is set to 100 ms instead of 10ms (which is what BrowserIO.js uses). */dojo.io.ScriptSrcTransport = new function(){	this.preventCache = false; // if this is true, we'll always force GET requests to not cache	this.maxUrlLength = 1000; //Used to calculate if script request should be multipart.	this.inFlightTimer = null;	this.DsrStatusCodes = {		Continue: 100,		Ok: 200,		Error: 500	};	this.startWatchingInFlight = function(){		if(!this.inFlightTimer){			this.inFlightTimer = setInterval("dojo.io.ScriptSrcTransport.watchInFlight();", 100);		}	}	this.watchInFlight = function(){		var totalCount = 0;		var doneCount = 0;		for(var param in this._state){			totalCount++;			var currentState = this._state[param];			if(currentState.isDone){				doneCount++;				delete this._state[param];			}else{				var listener = currentState.kwArgs;				try{					if(currentState.checkString && eval("typeof(" + currentState.checkString + ") != 'undefined'")){						this._finish(currentState, "load");						doneCount++;						delete this._state[param];					}else if(listener.timeoutSeconds && listener.timeout){						if(currentState.startTime + (listener.timeoutSeconds * 1000) < (new Date()).getTime()){							this._finish(currentState, "timeout");							doneCount++;							delete this._state[param];						}					}else if(!listener.timeoutSeconds){						//Increment the done count if no timeout is specified, so						//that we turn off the timer if all that is left in the state						//list are things we can't clean up because they fail without						//getting a callback.						doneCount++;					}				}catch(e){					this._finish(currentState, "error", {status: this.DsrStatusCodes.Error, response: e});				}			}		}			if(doneCount == totalCount){			clearInterval(this.inFlightTimer);			this.inFlightTimer = null;		}	}	this.canHandle = function(kwArgs){		return dojo.lang.inArray((kwArgs["mimetype"].toLowerCase()), ["text/javascript", "text/json"])			&& (kwArgs["method"].toLowerCase() == "get")			&& !(kwArgs["formNode"] && dojo.io.formHasFile(kwArgs["formNode"]))			&& (!kwArgs["sync"] || kwArgs["sync"] == false)			&& !kwArgs["file"]			&& !kwArgs["multipart"];	}	/**	 * Removes any script tags from the DOM that may have been added by ScriptSrcTransport.	 * Be careful though, by removing them from the script, you may invalidate some	 * script objects that were defined by the js file that was pulled in as the	 * src of the script tag. Test carefully if you decide to call this method.	 * 	 * In MSIE 6 (and probably 5.x), if you removed the script element while 	 * part of the script is still executing, the browser will crash.	 */	this.removeScripts = function(){		var scripts = document.getElementsByTagName("script");		for(var i = 0; scripts && i < scripts.length; i++){			var scriptTag = scripts[i];			if(scriptTag.className == "ScriptSrcTransport"){				var parent = scriptTag.parentNode;				parent.removeChild(scriptTag);				i--; //Set the index back one since we removed an item.			}		}	}	this.bind = function(kwArgs){		//START duplication from BrowserIO.js (some changes made)		var url = kwArgs.url;		var query = "";				if(kwArgs["formNode"]){			var ta = kwArgs.formNode.getAttribute("action");			if((ta)&&(!kwArgs["url"])){ url = ta; }			var tp = kwArgs.formNode.getAttribute("method");			if((tp)&&(!kwArgs["method"])){ kwArgs.method = tp; }			query += dojo.io.encodeForm(kwArgs.formNode, kwArgs.encoding, kwArgs["formFilter"]);		}		if(url.indexOf("#") > -1) {			dojo.debug("Warning: dojo.io.bind: stripping hash values from url:", url);			url = url.split("#")[0];		}		//Break off the domain/path of the URL.		var urlParts = url.split("?");		if(urlParts && urlParts.length == 2){			url = urlParts[0];			query += (query ? "&" : "") + urlParts[1];		}		if(kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"]){			dojo.undo.browser.addToHistory(kwArgs);		}		//Create an ID for the request.		var id = kwArgs["apiId"] ? kwArgs["apiId"] : "id" + this._counter++;		//Fill out any other content pieces.		var content = kwArgs["content"];		var jsonpName = kwArgs.jsonParamName;		if(kwArgs.sendTransport || jsonpName) {			if (!content){				content = {};			}			if(kwArgs.sendTransport){				content["dojo.transport"] = "scriptsrc";			}			if(jsonpName){				content[jsonpName] = "dojo.io.ScriptSrcTransport._state." + id + ".jsonpCall";			}		}		if(kwArgs.postContent){			query = kwArgs.postContent;		}else if(content){			query += ((query) ? "&" : "") + dojo.io.argsFromMap(content, kwArgs.encoding, jsonpName);		}		//END duplication from BrowserIO.js		//START DSR		//If an apiId is specified, then we want to make sure useRequestId is true.		if(kwArgs["apiId"]){			kwArgs["useRequestId"] = true;		}		//Set up the state for this request.		var state = {			"id": id,			"idParam": "_dsrid=" + id,			"url": url,			"query": query,			"kwArgs": kwArgs,			"startTime": (new Date()).getTime()		};		if(!url){			//Error. An URL is needed.			this._finish(state, "error", {status: this.DsrStatusCodes.Error, statusText: "url.none"});			return;		}		//If this is a jsonp request, intercept the jsonp callback		if(content && content[jsonpName]){			state.jsonp = content[jsonpName];			state.jsonpCall = function(data){				if(data["Error"]||data["error"]){					dojo.debug(dojo.json.serialize(data));					dojo.io.ScriptSrcTransport._finish(this, "error", data);				}else{					dojo.io.ScriptSrcTransport._finish(this, "load", data);				}			};		}		//Only store the request state on the state tracking object if a callback		//is expected or if polling on a checkString will be done.		if(kwArgs["useRequestId"] || kwArgs["checkString"] || state["jsonp"]){			this._state[id] = state;		}		//A checkstring is a string that if evaled will not be undefined once the		//script src loads. Used as an alternative to depending on a callback from		//the script file. If this is set, then multipart is not assumed to be used,		//since multipart requires a specific callback. With checkString we will be doing		//polling.		if(kwArgs["checkString"]){			state.checkString = kwArgs["checkString"];		}		//Constant params are parameters that should always be sent with each		//part of a multipart URL.		state.constantParams = (kwArgs["constantParams"] == null ? "" : kwArgs["constantParams"]);			if(kwArgs["preventCache"] ||			(this.preventCache == true && kwArgs["preventCache"] != false)){			state.nocacheParam = "dojo.preventCache=" + new Date().valueOf();		}else{			state.nocacheParam = "";		}		//Get total length URL, if we were to do it as one URL.		//Add some padding, extra & separators.		var urlLength = state.url.length + state.query.length + state.constantParams.length 				+ state.nocacheParam.length + this._extraPaddingLength;		if(kwArgs["useRequestId"]){			urlLength += state.idParam.length;		}				if(!kwArgs["checkString"] && kwArgs["useRequestId"] 			&& !state["jsonp"] && !kwArgs["forceSingleRequest"]			&& urlLength > this.maxUrlLength){			if(url > this.maxUrlLength){				//Error. The URL domain and path are too long. We can't				//segment that, so return an error.				this._finish(state, "error", {status: this.DsrStatusCodes.Error, statusText: "url.tooBig"});				return;			}else{				//Start the multiple requests.				this._multiAttach(state, 1);			}		}else{			//Send one URL.			var queryParams = [state.constantParams, state.nocacheParam, state.query];			if(kwArgs["useRequestId"] && !state["jsonp"]){				queryParams.unshift(state.idParam);			}			var finalUrl = this._buildUrl(state.url, queryParams);			//Track the final URL in case we need to use that instead of api ID when receiving			//the load callback.			state.finalUrl = finalUrl;						this._attach(state.id, finalUrl);		}		//END DSR		this.startWatchingInFlight();	}		//Private properties/methods	this._counter = 1;	this._state = {};	this._extraPaddingLength = 16;	//Is there a dojo function for this already?	this._buildUrl = function(url, nameValueArray){		var finalUrl = url;		var joiner = "?";		for(var i = 0; i < nameValueArray.length; i++){			if(nameValueArray[i]){				finalUrl += joiner + nameValueArray[i];				joiner = "&";			}		}		return finalUrl;	}	this._attach = function(id, url){		//Attach the script to the DOM.		var element = document.createElement("script");		element.type = "text/javascript";		element.src = url;		element.id = id;		element.className = "ScriptSrcTransport";		document.getElementsByTagName("head")[0].appendChild(element);	}	this._multiAttach = function(state, part){		//Check to make sure we still have a query to send up. This is mostly		//a protection from a goof on the server side when it sends a part OK		//response instead of a final response.		if(state.query == null){			this._finish(state, "error", {status: this.DsrStatusCodes.Error, statusText: "query.null"});			return;		}		if(!state.constantParams){			state.constantParams = "";		}		//How much of the query can we take?		//Add a padding constant to account for _part and a couple extra amperstands.		//Also add space for id since we'll need it now.		var queryMax = this.maxUrlLength - state.idParam.length					 - state.constantParams.length - state.url.length					 - state.nocacheParam.length - this._extraPaddingLength;				//Figure out if this is the last part.		var isDone = state.query.length < queryMax;			//Break up the query string if necessary.		var currentQuery;		if(isDone){			currentQuery = state.query;			state.query = null;		}else{			//Find the & or = nearest the max url length.			var ampEnd = state.query.lastIndexOf("&", queryMax - 1);			var eqEnd = state.query.lastIndexOf("=", queryMax - 1);			//See if & is closer, or if = is right at the edge,			//which means we should put it on the next URL.			if(ampEnd > eqEnd || eqEnd == queryMax - 1){				//& is nearer the end. So just chop off from there.				currentQuery = state.query.substring(0, ampEnd);				state.query = state.query.substring(ampEnd + 1, state.query.length) //strip off amperstand with the + 1.			}else{				//= is nearer the end. Take the max amount possible. 				currentQuery = state.query.substring(0, queryMax);			 				//Find the last query name in the currentQuery so we can prepend it to				//ampEnd. Could be -1 (not there), so account for that.				var queryName = currentQuery.substring((ampEnd == -1 ? 0 : ampEnd + 1), eqEnd);				state.query = queryName + "=" + state.query.substring(queryMax, state.query.length);			}		}				//Now send a part of the script		var queryParams = [currentQuery, state.idParam, state.constantParams, state.nocacheParam];		if(!isDone){			queryParams.push("_part=" + part);		}		var url = this._buildUrl(state.url, queryParams);		this._attach(state.id + "_" + part, url);	}	this._finish = function(state, callback, event){		if(callback != "partOk" && !state.kwArgs[callback] && !state.kwArgs["handle"]){			//Ignore "partOk" because that is an internal callback.			if(callback == "error"){				state.isDone = true;				throw event;			}		}else{			switch(callback){				case "load":					var response = event ? event.response : null;					if(!response){						response = event;					}					state.kwArgs[(typeof state.kwArgs.load == "function") ? "load" : "handle"]("load", response, event, state.kwArgs);					state.isDone = true;					break;				case "partOk":					var part = parseInt(event.response.part, 10) + 1;					//Update the constant params, if any.					if(event.response.constantParams){						state.constantParams = event.response.constantParams;					}					this._multiAttach(state, part);					state.isDone = false;					break;				case "error":					state.kwArgs[(typeof state.kwArgs.error == "function") ? "error" : "handle"]("error", event.response, event, state.kwArgs);					state.isDone = true;					break;				default:					state.kwArgs[(typeof state.kwArgs[callback] == "function") ? callback : "handle"](callback, event, event, state.kwArgs);					state.isDone = true;			}		}	}	dojo.io.transports.addTransport("ScriptSrcTransport");}//Define callback handler.window.onscriptload = function(event){	var state = null;	var transport = dojo.io.ScriptSrcTransport;		//Find the matching state object for event ID.	if(transport._state[event.id]){		state = transport._state[event.id];	}else{		//The ID did not match directly to an entry in the state list.		//Try searching the state objects for a matching original URL.		var tempState;		for(var param in transport._state){			tempState = transport._state[param];			if(tempState.finalUrl && tempState.finalUrl == event.id){				state = tempState;				break;			}		}		//If no matching original URL is found, then use the URL that was actually used		//in the SCRIPT SRC attribute.		if(state == null){			var scripts = document.getElementsByTagName("script");			for(var i = 0; scripts && i < scripts.length; i++){				var scriptTag = scripts[i];				if(scriptTag.getAttribute("class") == "ScriptSrcTransport"					&& scriptTag.src == event.id){					state = transport._state[scriptTag.id];					break;				}			}		}				//If state is still null, then throw an error.		if(state == null){			throw "No matching state for onscriptload event.id: " + event.id;		}	}	var callbackName = "error";	switch(event.status){		case dojo.io.ScriptSrcTransport.DsrStatusCodes.Continue:			//A part of a multipart request.			callbackName = "partOk";			break;		case dojo.io.ScriptSrcTransport.DsrStatusCodes.Ok:			//Successful reponse.			callbackName = "load";			break;	}	transport._finish(state, callbackName, event);};

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区久久久久久久久不| 日韩和欧美的一区| 亚洲欧美精品午睡沙发| 亚洲摸摸操操av| 亚洲专区一二三| 午夜成人在线视频| 久久国产成人午夜av影院| 91成人网在线| 色综合久久久久久久| 欧美性欧美巨大黑白大战| 欧美美女网站色| 精品国产伦理网| 五月激情综合网| 国精产品一区一区三区mba视频| 成人精品国产福利| 在线免费一区三区| 日韩丝袜情趣美女图片| 日本一区二区免费在线| 亚洲男人电影天堂| 麻豆视频观看网址久久| 成人网男人的天堂| 91.com视频| 日本一二三不卡| 亚洲不卡av一区二区三区| 久久国产精品99精品国产| 91亚洲精品久久久蜜桃| 欧美精三区欧美精三区| 久久精品亚洲麻豆av一区二区| 亚洲天堂成人在线观看| 日韩精品久久久久久| 国产不卡免费视频| 91精品国产综合久久久久久漫画 | 国产欧美一区二区精品性色超碰| 亚洲男人电影天堂| 激情伊人五月天久久综合| 一本色道久久综合亚洲aⅴ蜜桃| 日韩精品影音先锋| 国产精品国产三级国产| 蜜桃视频在线观看一区二区| 91女神在线视频| 久久久久久日产精品| 午夜亚洲福利老司机| 成人免费精品视频| 日韩视频一区二区三区| 一区二区三区91| 国产成人综合视频| 日韩久久久精品| 亚洲图片欧美色图| 成人免费av网站| 精品剧情在线观看| 亚洲一区中文日韩| 不卡免费追剧大全电视剧网站| 日韩女优视频免费观看| 一区二区三区丝袜| aaa国产一区| 久久久久97国产精华液好用吗| 亚洲午夜精品网| 99久久精品国产精品久久| 精品久久久久久久久久久久久久久久久 | 欧美精品一区二| 日韩在线a电影| 色婷婷国产精品| 国产精品国产三级国产aⅴ中文| 国产一区二区三区日韩| 日韩欧美在线一区二区三区| 亚洲第一二三四区| 91高清视频免费看| 亚洲日本va在线观看| 成人精品小蝌蚪| 久久精品日韩一区二区三区| 日本成人在线看| 4438亚洲最大| 日本vs亚洲vs韩国一区三区 | 一区二区三区在线视频播放| 99视频精品全部免费在线| 国产视频一区二区在线观看| 精品写真视频在线观看| 日韩欧美亚洲另类制服综合在线 | 欧美三级韩国三级日本三斤| 亚洲精品国产精品乱码不99| 在线日韩av片| 亚洲国产综合人成综合网站| 在线日韩av片| 丝袜亚洲另类丝袜在线| 欧美日韩电影在线| 午夜欧美视频在线观看| 欧美日韩成人激情| 日韩专区欧美专区| 日韩免费一区二区三区在线播放| 日本亚洲最大的色成网站www| 欧美裸体bbwbbwbbw| 日韩精品乱码免费| 日韩欧美亚洲另类制服综合在线| 蜜臀av亚洲一区中文字幕| 日韩欧美在线综合网| 国产一区欧美一区| 欧美激情自拍偷拍| proumb性欧美在线观看| 一区二区在线观看不卡| 欧美性生活大片视频| 天堂久久久久va久久久久| 这里只有精品99re| 紧缚奴在线一区二区三区| 国产偷v国产偷v亚洲高清| 波多野结衣精品在线| 一区二区三区四区蜜桃| 欧美日本一区二区在线观看| 麻豆一区二区99久久久久| 国产午夜精品在线观看| 99视频一区二区| 亚洲国产精品自拍| 欧美电视剧在线看免费| 国产成人精品一区二| 中文字幕一区不卡| 欧美日韩一级片网站| 久久er99热精品一区二区| 欧美激情一区三区| 色综合婷婷久久| 日本va欧美va精品| 国产日本欧美一区二区| 色婷婷av久久久久久久| 日韩 欧美一区二区三区| 久久久久国产精品厨房| 91福利精品第一导航| 久久精品久久综合| 国产精品国产三级国产a| 欧美群妇大交群中文字幕| 国产麻豆精品在线| 亚洲综合一二三区| 精品第一国产综合精品aⅴ| 99re热视频精品| 美女网站视频久久| 1区2区3区国产精品| 911精品国产一区二区在线| 国产成a人亚洲精| 视频精品一区二区| 国产精品人人做人人爽人人添| 一本一道久久a久久精品综合蜜臀| 麻豆中文一区二区| 亚洲伦在线观看| 欧美精品一区二区不卡| 91成人国产精品| 国产激情精品久久久第一区二区 | 国产成人午夜精品影院观看视频| 亚洲综合色自拍一区| 久久品道一品道久久精品| 欧美丝袜丝交足nylons| 成人性色生活片免费看爆迷你毛片| 亚洲成av人片在线观看| 国产精品久久久一本精品 | 日韩高清不卡一区二区三区| 中文欧美字幕免费| 日韩亚洲欧美成人一区| 一本色道久久综合亚洲aⅴ蜜桃| 国产毛片精品国产一区二区三区| 午夜成人免费电影| 亚洲欧美另类久久久精品| 久久精品视频免费| 日韩欧美一卡二卡| 欧美性大战久久久| 99视频有精品| 粉嫩高潮美女一区二区三区| 日本不卡一区二区| 一区二区三区在线看| 国产精品久久久久久久久久免费看| 日韩一区二区三区在线| 欧美日韩第一区日日骚| 91麻豆福利精品推荐| 粉嫩aⅴ一区二区三区四区| 久久国产婷婷国产香蕉| 天堂影院一区二区| 一区二区免费在线播放| **性色生活片久久毛片| 中文字幕第一区综合| 久久精品水蜜桃av综合天堂| 精品av综合导航| 日韩视频一区二区在线观看| 欧美精品色一区二区三区| 在线观看日产精品| 色综合色狠狠综合色| k8久久久一区二区三区 | 欧美高清视频一二三区| 欧美综合在线视频| 色婷婷av一区二区三区软件| 91亚洲午夜精品久久久久久| av一区二区三区在线| 岛国av在线一区| 成人黄色免费短视频| 成人一区二区三区在线观看| 东方aⅴ免费观看久久av| 国产成人精品一区二| 国产+成+人+亚洲欧洲自线| 国产精品一卡二| 国产成人在线观看| 国产成人h网站| 成人免费高清在线观看| 成人免费视频播放| 成人成人成人在线视频| av电影在线观看不卡| 91麻豆精东视频|