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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dojoexternalinterface.as

?? 圖書管理系統包括圖書的增加、刪除、修改等功能
?? AS
字號:
/*	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*//**
	A wrapper around Flash 8's ExternalInterface; DojoExternalInterface is needed so that we
	can do a Flash 6 implementation of ExternalInterface, and be able
	to support having a single codebase that uses DojoExternalInterface
	across Flash versions rather than having two seperate source bases,
	where one uses ExternalInterface and the other uses DojoExternalInterface.
	
	DojoExternalInterface class does a variety of optimizations to bypass ExternalInterface's
	unbelievably bad performance so that we can have good performance
	on Safari; see the blog post
	http://codinginparadise.org/weblog/2006/02/how-to-speed-up-flash-8s.html
	for details.
	
	@author Brad Neuberg, bkn3@columbia.edu
*/
import flash.external.ExternalInterface;

class DojoExternalInterface{
	public static var available:Boolean;
	public static var dojoPath = "";
	
	private static var flashMethods:Array = new Array();
	private static var numArgs:Number;
	private static var argData:Array;
	private static var resultData = null;
	
	public static function initialize(){
		// extract the dojo base path
		DojoExternalInterface.dojoPath = DojoExternalInterface.getDojoPath();
		
		// see if we need to do an express install
		var install:ExpressInstall = new ExpressInstall();
		if(install.needsUpdate){
			install.init();
		}
		
		// register our callback functions
		ExternalInterface.addCallback("startExec", DojoExternalInterface, startExec);
		ExternalInterface.addCallback("setNumberArguments", DojoExternalInterface,
																	setNumberArguments);
		ExternalInterface.addCallback("chunkArgumentData", DojoExternalInterface,
																	chunkArgumentData);
		ExternalInterface.addCallback("exec", DojoExternalInterface, exec);
		ExternalInterface.addCallback("getReturnLength", DojoExternalInterface,
																	getReturnLength);
		ExternalInterface.addCallback("chunkReturnData", DojoExternalInterface,
																	chunkReturnData);
		ExternalInterface.addCallback("endExec", DojoExternalInterface, endExec);
		
		// set whether communication is available
		DojoExternalInterface.available = ExternalInterface.available;
		DojoExternalInterface.call("loaded");
	}
	
	public static function addCallback(methodName:String, instance:Object, 
										 								 method:Function) : Boolean{
		// register DojoExternalInterface methodName with it's instance
		DojoExternalInterface.flashMethods[methodName] = instance;
		
		// tell JavaScript about DojoExternalInterface new method so we can create a proxy
		ExternalInterface.call("dojo.flash.comm._addExternalInterfaceCallback", 
													 methodName);
													 
		return true;
	}
	
	public static function call(methodName:String,
								resultsCallback:Function) : Void{
		// we might have any number of optional arguments, so we have to 
		// pass them in dynamically; strip out the results callback
		var parameters = new Array();
		for(var i = 0; i < arguments.length; i++){
			if(i != 1){ // skip the callback
				parameters.push(arguments[i]);
			}
		}
		
		var results = ExternalInterface.call.apply(ExternalInterface, parameters);
		
		// immediately give the results back, since ExternalInterface is
		// synchronous
		if(resultsCallback != null && typeof resultsCallback != "undefined"){
			resultsCallback.call(null, results);
		}
	}
	
	/** 
			Called by Flash to indicate to JavaScript that we are ready to have
			our Flash functions called. Calling loaded()
			will fire the dojo.flash.loaded() event, so that JavaScript can know that
			Flash has finished loading and adding its callbacks, and can begin to
			interact with the Flash file.
	*/
	public static function loaded(){
		DojoExternalInterface.call("dojo.flash.loaded");
	}
	
	public static function startExec():Void{
		DojoExternalInterface.numArgs = null;
		DojoExternalInterface.argData = null;
		DojoExternalInterface.resultData = null;
	}
	
	public static function setNumberArguments(numArgs):Void{
		DojoExternalInterface.numArgs = numArgs;
		DojoExternalInterface.argData = new Array(DojoExternalInterface.numArgs);
	}
	
	public static function chunkArgumentData(value, argIndex:Number):Void{
		//getURL("javascript:dojo.debug('FLASH: chunkArgumentData, value="+value+", argIndex="+argIndex+"')");
		var currentValue = DojoExternalInterface.argData[argIndex];
		if(currentValue == null || typeof currentValue == "undefined"){
			DojoExternalInterface.argData[argIndex] = value;
		}else{
			DojoExternalInterface.argData[argIndex] += value;
		}
	}
	
	public static function exec(methodName):Void{
		// decode all of the arguments that were passed in
		for(var i = 0; i < DojoExternalInterface.argData.length; i++){
			DojoExternalInterface.argData[i] = 
				DojoExternalInterface.decodeData(DojoExternalInterface.argData[i]);
		}
		
		var instance = DojoExternalInterface.flashMethods[methodName];
		DojoExternalInterface.resultData = instance[methodName].apply(
																			instance, DojoExternalInterface.argData);
		// encode the result data
		DojoExternalInterface.resultData = 
			DojoExternalInterface.encodeData(DojoExternalInterface.resultData);
			
		//getURL("javascript:dojo.debug('FLASH: encoded result data="+DojoExternalInterface.resultData+"')");
	}
	
	public static function getReturnLength():Number{
	 if(DojoExternalInterface.resultData == null || 
	 					typeof DojoExternalInterface.resultData == "undefined"){
	 	return 0;
	 }
	 var segments = Math.ceil(DojoExternalInterface.resultData.length / 1024);
	 return segments;
	}
	
	public static function chunkReturnData(segment:Number):String{
		var numSegments = DojoExternalInterface.getReturnLength();
		var startCut = segment * 1024;
		var endCut = segment * 1024 + 1024;
		if(segment == (numSegments - 1)){
			endCut = segment * 1024 + DojoExternalInterface.resultData.length;
		}
			
		var piece = DojoExternalInterface.resultData.substring(startCut, endCut);
		
		//getURL("javascript:dojo.debug('FLASH: chunking return piece="+piece+"')");
		
		return piece;
	}
	
	public static function endExec():Void{
	}
	
	private static function decodeData(data):String{
		// we have to use custom encodings for certain characters when passing
		// them over; for example, passing a backslash over as //// from JavaScript
		// to Flash doesn't work
		data = DojoExternalInterface.replaceStr(data, "&custom_backslash;", "\\");
		
		data = DojoExternalInterface.replaceStr(data, "\\\'", "\'");
		data = DojoExternalInterface.replaceStr(data, "\\\"", "\"");
		
		return data;
	}
	
	private static function encodeData(data){
		//getURL("javascript:dojo.debug('inside flash, data before="+data+"')");

		// double encode all entity values, or they will be mis-decoded
		// by Flash when returned
		data = DojoExternalInterface.replaceStr(data, "&", "&amp;");
		
		// certain XMLish characters break Flash's wire serialization for
		// ExternalInterface; encode these into a custom encoding, rather than
		// the standard entity encoding, because otherwise we won't be able to
		// differentiate between our own encoding and any entity characters
		// that are being used in the string itself
		data = DojoExternalInterface.replaceStr(data, '<', '&custom_lt;');
		data = DojoExternalInterface.replaceStr(data, '>', '&custom_gt;');
		
		// encode control characters and JavaScript delimiters
		data = DojoExternalInterface.replaceStr(data, "\n", "\\n");
		data = DojoExternalInterface.replaceStr(data, "\r", "\\r");
		data = DojoExternalInterface.replaceStr(data, "\f", "\\f");
		data = DojoExternalInterface.replaceStr(data, "'", "\\'");
		data = DojoExternalInterface.replaceStr(data, '"', '\"');
		
		//getURL("javascript:dojo.debug('inside flash, data after="+data+"')");
		return data;
	}
	
	/** 
			Flash ActionScript has no String.replace method or support for
			Regular Expressions! We roll our own very simple one.
	*/
	private static function replaceStr(inputStr:String, replaceThis:String, 
																		 withThis:String):String {
		var splitStr = inputStr.split(replaceThis)
		inputStr = splitStr.join(withThis)
		return inputStr;
	}
	
	private static function getDojoPath(){
		var url = _root._url;
		var start = url.indexOf("baseRelativePath=") + "baseRelativePath=".length;
		var path = url.substring(start);
		var end = path.indexOf("&");
		if(end != -1){
			path = path.substring(0, end);
		}
		return path;
	}
}

// vim:ts=4:noet:tw=0:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜成人免费电影| 午夜不卡av在线| 高清在线不卡av| 久久九九久久九九| 成人午夜大片免费观看| 国产午夜精品一区二区三区四区| 国产在线日韩欧美| 国产精品色噜噜| 在线视频国内一区二区| 亚洲1区2区3区4区| 欧美α欧美αv大片| 国产ts人妖一区二区| 国产精品不卡一区| 欧美日韩高清在线| 国内久久精品视频| 亚洲欧美aⅴ...| 欧美三区在线观看| 久久97超碰国产精品超碰| 国产欧美日韩三级| 91极品美女在线| 美女诱惑一区二区| 国产精品免费丝袜| 欧美精品久久99| 国产精品自拍一区| 夜夜精品视频一区二区| 日韩一区二区电影在线| 成+人+亚洲+综合天堂| 亚洲一级在线观看| 国产午夜精品久久| 欧美日韩国产综合一区二区 | 久久综合网色—综合色88| 床上的激情91.| 日韩综合小视频| 国产精品美女www爽爽爽| 欧美三级日韩三级| 丰满放荡岳乱妇91ww| 亚洲午夜免费视频| 久久精品一区二区| 欧美理论片在线| 国内久久精品视频| 首页国产欧美日韩丝袜| 国产精品久久久久影视| 日韩亚洲欧美在线| 日本乱码高清不卡字幕| 精品亚洲porn| 亚洲成人精品影院| 亚洲少妇最新在线视频| 精品国产乱码久久久久久免费 | 色综合久久久久| 久久66热偷产精品| 亚洲成人av一区二区三区| 国产精品热久久久久夜色精品三区| 欧美精品免费视频| 日本电影欧美片| 成人激情开心网| 国产做a爰片久久毛片| 亚洲动漫第一页| 亚洲摸摸操操av| 国产精品丝袜黑色高跟| 精品国产电影一区二区| 欧美精品视频www在线观看 | 欧美日韩在线观看一区二区| 国产jizzjizz一区二区| 麻豆精品视频在线| 日韩精品1区2区3区| 亚洲成人综合视频| 一区二区免费在线播放| |精品福利一区二区三区| 国产午夜亚洲精品不卡| 久久久久久久久久久电影| 精品少妇一区二区三区在线视频| 欧美日本韩国一区二区三区视频| 91成人免费在线| 在线这里只有精品| 91麻豆精品一区二区三区| 99久久国产免费看| 色香蕉成人二区免费| 日本韩国一区二区| 欧美视频一二三区| 欧美亚洲精品一区| 精品视频在线视频| 在线播放一区二区三区| 777亚洲妇女| 欧美zozo另类异族| 久久久99精品免费观看不卡| 久久久久九九视频| 国产精品久久久久久久久免费丝袜| 国产精品无圣光一区二区| 国产精品久久三区| 亚洲精品国产第一综合99久久| 亚洲精品日韩一| 亚洲高清久久久| 免费人成黄页网站在线一区二区| 日本欧美在线观看| 国产美女精品一区二区三区| 成人毛片在线观看| 在线观看国产日韩| 91精品国产综合久久精品麻豆| 欧美一区二区三级| 久久久精品国产99久久精品芒果| 国产精品嫩草久久久久| 亚洲综合久久久久| 免费成人你懂的| 国产精品系列在线播放| 91麻豆蜜桃一区二区三区| 欧美日韩不卡一区二区| 精品久久久久av影院| 国产亚洲va综合人人澡精品| 亚洲人精品午夜| 日本不卡在线视频| 国产成人免费av在线| 一本色道久久综合精品竹菊 | 日韩一区二区三区视频| 久久精品一区二区三区不卡牛牛| 亚洲欧洲国产专区| 免费精品视频最新在线| 粉嫩嫩av羞羞动漫久久久 | 国产精品中文字幕日韩精品| 成人的网站免费观看| 欧美人动与zoxxxx乱| 久久婷婷色综合| 亚洲国产成人porn| 国产不卡在线一区| 欧美肥大bbwbbw高潮| 国产午夜三级一区二区三| 亚洲一区二区三区小说| 国产精品伊人色| 欧美男人的天堂一二区| 国产日产精品1区| 亚洲成av人片| 成人污污视频在线观看| 91精品欧美综合在线观看最新| 国产农村妇女精品| 日韩不卡一区二区三区| 99精品国产视频| 2020国产精品自拍| 日韩精品成人一区二区在线| 成人高清免费观看| 久久嫩草精品久久久久| 日韩在线a电影| 色综合久久88色综合天天6| 久久久亚洲精品石原莉奈| 亚洲成人av一区| 一本大道综合伊人精品热热| 久久久国产精华| 琪琪一区二区三区| 在线免费观看一区| 国产精品白丝在线| 国产a视频精品免费观看| 欧美变态口味重另类| 日韩国产精品久久久| 91福利精品视频| 中文字幕一区二区三区四区不卡| 久久精品国产**网站演员| 制服丝袜激情欧洲亚洲| 亚洲综合区在线| 色综合久久天天| 亚洲欧美偷拍三级| 97se亚洲国产综合自在线| 国产精品视频免费看| 国产精品一卡二卡| 久久午夜羞羞影院免费观看| 久久精品国产999大香线蕉| 欧美一区二区三区四区在线观看| 亚洲一区二区精品久久av| 日本精品一区二区三区四区的功能| 国产精品久久午夜夜伦鲁鲁| 成人免费av网站| 中文字幕欧美国产| 成人av小说网| 日韩久久一区二区| 色综合天天综合给合国产| 亚洲欧洲一区二区在线播放| 99精品桃花视频在线观看| 中文字幕一区二区三区不卡| 成人午夜伦理影院| 亚洲手机成人高清视频| 91美女精品福利| 亚洲综合激情网| 欧美视频一区二| 日本在线不卡一区| 久久丝袜美腿综合| 成人性生交大片免费看中文网站 | 亚洲欧洲日韩在线| 91老师片黄在线观看| 亚洲日穴在线视频| 欧美日韩精品福利| 乱一区二区av| 国产午夜精品一区二区三区视频 | 91精品中文字幕一区二区三区| 亚洲成人免费视频| 日韩欧美国产一二三区| 国产精品综合一区二区| 综合激情网...| 欧美另类z0zxhd电影| 精品一区二区三区的国产在线播放 | 一区二区三区免费网站| 欧美精品第1页| 国产精品一区专区| 亚洲视频图片小说|