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

📄 airintrospector.js

📁 ext-2.3.0
💻 JS
📖 第 1 页 / 共 5 页
字号:
/*
 * Ext JS Library 0.30
 * Copyright(c) 2006-2009, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://extjs.com/license
 */

/* AIRIntrospector.js - Revision: 1.5 */// Copyright 2007-2008. Adobe Systems Incorporated.// All rights reserved.//// Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are met:////   * Redistributions of source code must retain the above copyright notice,//     this list of conditions and the following disclaimer.//   * Redistributions in binary form must reproduce the above copyright notice,//     this list of conditions and the following disclaimer in the documentation//     and/or other materials provided with the distribution.//   * Neither the name of Adobe Systems Incorporated nor the names of its//     contributors may be used to endorse or promote products derived from this//     software without specific prior written permission.//// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE// POSSIBILITY OF SUCH DAMAGE.var air;(function(){	if(typeof air=='undefined') air = {};air.Introspector = {};// Check the runtime. if(typeof window.runtime!='undefined' && typeof window.nativeWindow!='undefined')     var isAppSandbox = true;else     var isAppSandbox = false;	//=======================================================================================================================================================//Introspector.js//=======================================================================================================================================================//----------------------------------------------------------------------------------------------------/***	@API air.Introspector.Console*	@description Exposes log, warn, info, error, dump to the user*	THIS IS THE ONLY SUPPORTED APIs */air.Introspector.Console = {		 log: function(){		   	air.Introspector.logArguments(arguments,			 		{htmlLoader:isAppSandbox?window.htmlLoader:null});		 },		 warn : function(){		        air.Introspector.logArguments(arguments,			 			{htmlLoader:isAppSandbox?window.htmlLoader:null, type:'warn'});        		 },		 info : function(){		        air.Introspector.logArguments(arguments,			 			{htmlLoader:isAppSandbox?window.htmlLoader:null, type:'info'});        		 }, 		 error : function(){		        air.Introspector.logArguments(arguments,			 			{htmlLoader:isAppSandbox?window.htmlLoader:null, type:'error'});        		 }, 		 dump : function(obj, level){			air.Introspector.logArguments(air.Introspector.dump(obj, level),			 		{htmlLoader: isAppSandbox?window.htmlLoader:null, usePre:true});		 }};//----------------------------------------------------------------------------------------------------air.Introspector.config = {    showTimestamp: true,						//Make the console show time stamps before each line    showSender: true,							//Make the console show time stamps    wrapColumns: 2000,							//Source files are soft-wrapped at around 2000 columns by default 	flashTabLabels: true,						//Console and xhr columns can flash whenever something happend to them (eg. logged something). You can turn it off												//by setting this to false	closeIntrospectorOnExit: true,				//Makes the inspector window close when the last window closed	debugRuntimeObjects: true,					//Also expand ActionScript objects	introspectorKey:122,						//Inspect key - by default it is F11 (122)	debuggerKey:123, 							//Toggle inspectors visibility - by default it is F12 (123)    useAirDebugHtml: false,						//Internal only};/***	@module air.Introspector*/air.Introspector.extend = function(dst, src){	//Take every property from src and put it in dst    for(var i in src){        dst[i]=src[i];    }};//	Checking if the user has configured Introspector using global AIRIntrospectorConfig variableif(typeof AIRIntrospectorConfig!='undefined'){	air.Introspector.extend(air.Introspector.config, AIRIntrospectorConfig);}var eventListeners = [];//	Can not expand ActionScript objects from remote sandbox - we can not even access ActionScript from there //	just disabled this featureif(!isAppSandbox) air.Introspector.config.debugRuntimeObjects = false;//	Made this use g/setters in order to make it easy to send its value over the bridgeair.Introspector.__defineGetter__('inspect', function(){    return air.Introspector._inspect;});air.Introspector.__defineSetter__('inspect', function(value){    air.Introspector._inspect=value;    if(!isAppSandbox){        setTimeout(function(){			air.Introspector.noBridge(function(){				parentSandboxBridge.air_Introspector_setInspect(value);			});        }, 0);    }else{		if(!value){			air.Introspector.hideHighlight();		}	}});	air.Introspector.extend(air.Introspector, { 	/**	*	Makes it easier to acces runtime packages	*	it makes sense only in the application sandbox	*/	runtime: isAppSandbox?{ 		HTMLLoader : window.runtime.flash.html.HTMLLoader,		Event : window.runtime.flash.events.Event,		IOErrorEvent: window.runtime.flash.events.IOErrorEvent,		NativeApplication: window.runtime.flash.desktop.NativeApplication,		URLLoader : window.runtime.flash.net.URLLoader,		URLRequest : window.runtime.flash.net.URLRequest,		NativeWindowInitOptions : window.runtime.flash.display.NativeWindowInitOptions,		Capabilities: window.runtime.flash.system.Capabilities,		trace : window.runtime.trace,	}:null,		_inspect: false,	remoteInspect: false,    canClick: false,	bridgeCallbacks: [],			/**	*	Different coloring styles for tag names, by default 'default' is used	*	Undocumented feature	*		- you can change the color of elements while inspecting by tag name, check bellow the body: 0x00CC00 line,	*		  uncomment that line, duplicate and change it with your own colors	*/    highlightBgColors: {        'default': 0xFFCC00,        //body: 0x00CC00,            },	/**	*	@function trimRegExp	*	@description Trims spaces from a string	*	@private	*/    trimRegExp: /^[\s\r\n]*([\s\S]*?)[\s\r\n]*$/g,    trim:function(str){    	return str.replace(air.Introspector.trimRegExp, '$1');    },	/**	*	@function blockWrap	*	@description Wraps a string by air.Introspector.config.wrapColumns columns	*/    blockWrap: function(str){    	//used for spliting large lines in <pre>    	var cols = air.Introspector.config.wrapColumns;    	var lines = str.split(/\n/);    	var buffer = [];    	var l = lines.length;    	var lineNumbers = [];    	for(var i=0;i<l;i++){    		lineNumbers.push(i+1);    		var line = lines[i];    		while(line.length>cols){    			buffer.push(line.substr(0, cols));    			line = line.substr(cols);    			lineNumbers.push('');    		}    		buffer.push(line);    	}    	lineNumbers.push('EOF');    	return [buffer.join('\n'), lineNumbers.join('\n')];    },		/**	*	@function getTextFormat	*	@description Returns a new flash TextField	*/    createTextField: function(parentSprite, fontSize, fontBold) {		if(isAppSandbox){       		var tf = new runtime.flash.text.TextField();	        tf.embedFonts = false;	        tf.autoSize = runtime.flash.text.TextFieldAutoSize.LEFT;	        tf.antiAliasType = runtime.flash.text.AntiAliasType.ADVANCED;	        tf.defaultTextFormat = air.Introspector.getTextFormat(fontSize, fontBold);	        tf.selectable = false;	        tf.mouseEnabled = true;	        tf.x = 4;	        tf.text = "";	        if(parentSprite.numChildren > 0) {	            var sibling = parentSprite.getChildAt(parentSprite.numChildren - 1);	            tf.y = sibling.y + sibling.height + 15;	        }	        parentSprite.addChild(tf);	        return tf;		}else{			//should not get here			return null;		}    },    /**	*	@function getTextFormat	*	Returns a new flash TextFormat	*	see createTextField	*/    getTextFormat: function(fontSize, fontBold){		if(isAppSandbox){        	var format = new runtime.flash.text.TextFormat();	        format.size = fontSize;	        format.font = "Tahoma";	        format.bold = fontBold;	        format.color = 0x330066;        	return format;		}else{			//should not get here			return null;		}    },    	/**	*	@function extendRect 	*	@description Initializes the sprite with values from the rectangle	*/	extendRect: function(sprite, rect){		sprite.x = rect.x;		sprite.y = rect.y;		sprite.width = rect.width;		sprite.height = rect.height;		sprite.scaleX = rect.scaleX;		sprite.scaleY = rect.scaleY;				},			/**	*	@function showHighlight	*	@description Shows a highlighting flash sprite using coordinates from rectangle	*/    showHighlight: function(rect){		if(isAppSandbox){	        //dehilight everyone else	        var ownedWindows = air.Introspector.getHtmlWindows();	        for(var i=ownedWindows.length-1;i>=0;i--){	                try{	                    ownedWindows[i].htmlLoader.window.air.Introspector.hideHighlight();	                }catch(e){	                    //no air.Introspector	                }	        }	        air.Introspector.extendRect(air.Introspector.highlightSprite, rect);		}else{			setTimeout(function(){				air.Introspector.noBridge(function(){					parentSandboxBridge.air_Introspector_showHighlight(rect);								});							}, 0);								}    },	/**	*	@function hideHighlight	*	@description Make the higlight box go away	*/    hideHighlight: function(){		if(isAppSandbox){        	air.Introspector.extendRect(air.Introspector.highlightSprite, {x:0, y:0, width:0, height:0, scaleX:0, scaleY:0});	        air.Introspector.highlightText.visible = false;		}else{			setTimeout(function(){				try{					parentSandboxBridge.air_Introspector_hideHighlight();				}catch(e){ 						// no bridge yet					}			}, 0);		}    },	/**	*	@function remoteClick	*	@description Make the remote sandbox know that the inspection finished	*/	remoteClick: function(){		air.Introspector.debugWindow.finishInspect(false);        air.Introspector.hideHighlight();	},			/**	*	@function createHighlight	*	@description 	Creates a flash sprite used to higlight elements	*				    By using this method we are sure that no dom manipulation is done and  	*				    no style is changed in HTML.	*/    createHighlight: function(){		if(isAppSandbox){	        var sprite = new runtime.flash.display.Sprite();	        sprite.mouseEnabled =  false;	        sprite.width = 0;	        sprite.height = 0;	        sprite.buttonMode = true;	        var prevent = function(element, event, isClick){	            air.Introspector.addEventListener(element, event, function(e){	                if((air.Introspector.inspect||air.Introspector.remoteInspect) &&sprite.hitTestPoint(e.stageX, e.stageY)){	                    e.preventDefault();	                    e.stopPropagation();	                    e.stopImmediatePropagation();	                   	if(isClick&&air.Introspector.canClick){							if(air.Introspector.remoteInspect){								try{									air.Introspector.inspectFrame.contentWindow.childSandboxBridge.air_Introspector_remoteClick();								}catch(e){ air.Introspector.noChildBridge(air.Introspector.inspectFrame); }							}else{	                        	air.Introspector.debugWindow.finishInspect(false);		                        air.Introspector.hideHighlight();							}	                    }	                }	            }, true, 2000000);	        };	        var check = function(element, event){	            air.Introspector.addEventListener(element, event, function(e){	               if((air.Introspector.inspect||air.Introspector.remoteInspect)&&nativeWindow.active){	                    setTimeout(function(){	                        air.Introspector.canClick = true;	                    }, 100);	               }	            }, true, 200000);	        }        	        var labelMover = function(element, event){	        	air.Introspector.addEventListener(element, event, function(e){		           if((air.Introspector.inspect||air.Introspector.remoteInspect)){	                  air.Introspector.highlightText.x = e.stageX+15;	                  air.Introspector.highlightText.y = e.stageY+15;//					  air.Introspector.highlightText.visible = true;	               }else{	                  air.Introspector.highlightText.visible = false;	               }	        	}, true, 200000);	        }	       prevent(htmlLoader.stage, runtime.flash.events.MouseEvent.CLICK, true);	       prevent(htmlLoader.stage, runtime.flash.events.MouseEvent.MOUSE_DOWN);

⌨️ 快捷键说明

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