`
darrenzhu
  • 浏览: 806709 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

flex浏览器相关辅组类

阅读更多
package util
{
	import flash.external.ExternalInterface;
	
	import mx.controls.Alert;
	import mx.core.Application;
	import mx.core.FlexGlobals;
	import mx.events.BrowserChangeEvent;
	import mx.managers.BrowserManager;
	import mx.managers.IBrowserManager;
	import mx.utils.URLUtil;

	/**
	 * A utility class related to browser
	 */ 
	public class BrowserUtil
	{
		private static var _singletonInstance:BrowserUtil;
		public var browserManager:IBrowserManager;
		public var fullURL:String;
		public var baseURL:String;
		public var fragment:String;
		public var protocol:String;
		public var port:int;
		public var serverName:String;
		public var isHttpsURL:Boolean;
		public var previousURL:String;
		public var contextRoot:String;
		
		public function BrowserUtil()
		{
			if(_singletonInstance!=null){
				throw new Error("Singleton class BrowserUtil has already been instantiated");
			}
			init();
		}
		
		private var _initalized:Boolean=false;
		private function init():void {
			if(!_initalized){
				browserManager = BrowserManager.getInstance();
				browserManager.addEventListener(BrowserChangeEvent.URL_CHANGE, urlChangedHandler);
				browserManager.addEventListener(BrowserChangeEvent.BROWSER_URL_CHANGE, browserURLChangeHandler);
				browserManager.addEventListener(BrowserChangeEvent.APPLICATION_URL_CHANGE,applicationURLChangeHandler);
				parseURL(getPageURL());
				browserManager.init("", "Welcome");
				browserManager.setTitle("Welcome");
				_initalized=true;
			}
		}
		
		private function getPageURL():String{
			var url:String=browserManager.url;
			if(url==null || url.length==0){
				url=getTopLevelApplication().url;
			}
			if(url==null || url.length==0){
				url=ExternalInterface.call("window.location.href.toString");
			}
			return url;
		}
		
		private function getTopLevelApplication():Object{
			//flex 3 use Application.application, flex 4 changed to
			return FlexGlobals.topLevelApplication;
		}
		
		private function browserURLChangeHandler(e:BrowserChangeEvent):void{
			//Alert.show("BrowserChangeEvent.BROWSER_URL_CHANGE triggered");
		}
		
		private function applicationURLChangeHandler(e:BrowserChangeEvent):void{
			//Alert.show("BrowserChangeEvent.APPLICATION_URL_CHANGE triggered");
		}
		
		public static function getInstance():BrowserUtil{
			if(_singletonInstance==null){
				_singletonInstance=new BrowserUtil();
			}
			return _singletonInstance;
		}
		
		public function updateTitle(title:String):void {
			browserManager.setTitle(title);
		}
		
		private function updateURL(fragment:String):void {
			browserManager.setFragment(fragment);
		}
		
		private function parseURL(url:String):void{
			baseURL = browserManager.base;
			fragment = browserManager.fragment;                
			fullURL = URLUtil.getFullURL(url, url);
			port = URLUtil.getPort(url);
			protocol = URLUtil.getProtocol(url);
			serverName = URLUtil.getServerName(url);
			isHttpsURL = URLUtil.isHttpsURL(url); 
			contextRoot=getContextRoot(fullURL);
		}
		
		private function urlChangedHandler(e:BrowserChangeEvent):void {
			var url:String = browserManager.url;
			parseURL(url);
			previousURL = e.lastURL;
		}
		
		/**
		 * Returns the context root of the application embedding this file. 
		 * Given http://localhost:8080/myapp/index.html, "myapp" will be returnd.
		 */ 
		private function getContextRoot(url:String):String{
			var firstDoubleSlash:int=url.indexOf("//");
			//find the first single slash, start 2 after firstDoubleSlash, note indexOf is 0-based method, so add 2
			var firstSingleSlash:int=url.indexOf("/",firstDoubleSlash+2)+1;
			var secondSingleSlash:int=url.indexOf("/",firstSingleSlash);
			return url.substring(firstSingleSlash,secondSingleSlash);
		}
	}
}
分享到:
评论

相关推荐

    flex组件

    “工具”标签可能意味着文章介绍了与Flex布局相关的开发工具或调试技巧,例如浏览器的开发者工具如何辅助检查和调整Flex布局。这些工具能够帮助开发者直观地查看和修改元素的Flex属性,从而快速定位和解决问题。 ...

    使用IntelliJ_IDEA开发Flex应用

    - **Flex文档与资源**:为了更好地理解Flex的应用开发过程和相关技术细节,建议查阅Adobe官方提供的Flex文档和资源,这些资料可以在[Adobe Flex文档中心](http://www.adobe.com/support/documentation/en/flex/)找到...

    Flex应用程序开发

    部署Flex应用程序涉及到将编译后的SWF文件和相关的资源文件上传到服务器,并配置适当的HTTP请求处理程序。对于桌面应用,使用Adobe AIR进行打包和部署,可以确保应用程序能够在不同的操作系统上稳定运行。Adobe提供...

    flex组件,功能强大的下拉框

    考虑到前端开发的多样性,这个Flex组件应确保在主流浏览器和设备上都能正常工作,包括移动设备和平板电脑。 9. **测试与调试** 为了确保组件的稳定性和可靠性,需要进行充分的单元测试、集成测试以及浏览器兼容性...

    flex 资源

    标题 "flex 资源" 暗示我们即将探讨的是与Adobe Flex相关的技术资源。Flex是一种用于构建富互联网应用程序(RIA)的开源框架,它基于ActionScript编程语言和MXML标记语言,主要应用于开发跨平台的桌面和移动Web应用...

    Flex AcrionScript 和 JavaScript 通讯

    1. **ExternalInterface API**: Flex中的`ExternalInterface`类提供了与JavaScript进行通信的接口。在上述示例中,`ExternalInterface.addCallback()`方法用于注册一个在JavaScript中可调用的ActionScript函数,而`...

    flex 播放器 源码

    `libs`目录可能包含了项目所需要的库文件,这些库可能包含Flex框架的组件、第三方媒体处理库或者其他辅助工具类。这些库为播放器提供了额外的功能,如解码、流媒体支持等。 通过分析这个Flex播放器源码,我们可以...

    flex css设计器

    总结来说,Flex CSS设计器是Flex开发中一个非常实用的辅助工具,它简化了CSS样式的创建和管理,提高了Flex应用程序的界面设计效率。通过它的可视化界面和实时预览功能,开发者和设计师可以更加专注于创造吸引人的...

    Flex+白皮书

    2. **Flash Player与Adobe AIR**:Flex编译后的应用程序通常运行在Flash Player上,这是一个跨平台的浏览器插件,使得Flex应用可以在多个操作系统和浏览器中运行。此外,Adobe AIR(Adobe Integrated Runtime)则...

    flex debug插件

    Flex Debug插件是针对Adobe Flex开发工具的重要辅助组件,它为开发者提供了强大的调试功能,能够帮助程序员在构建Flex应用程序时定位并修复问题。在本文中,我们将深入探讨Flex Debug插件的功能、安装方法以及如何...

    Flex+myeclipse开发过程图解

    Flex是一种用于构建和部署跨浏览器、跨平台的互联网应用程序的开源框架。它最初由Macromedia开发,后被Adobe收购并继续维护。Flex支持创建高度交互式的用户界面,并能充分利用客户端硬件资源进行高性能的图像渲染和...

    flex中使用away3d引擎播放的帧动画示例

    在源代码结构中,`src`目录可能包含了主要的ActionScript类文件,比如主程序类、 Away3D场景类、以及处理帧动画逻辑的辅助类。`.actionScriptProperties`文件是Flex Builder或IntelliJ IDEA等IDE的配置文件,用于...

    这是一个flex做的管理系统

    在Flex应用中,SWF文件包含了所有编译后的代码、资源和组件,用户浏览器通过Flash Player插件运行此文件以呈现应用程序。这个`library.swf`很可能是整个管理系统的主程序,包含了界面、逻辑和数据处理等功能。 而`...

    流程设计器(flex版)

    同时,由于Flex使用ActionScript编程语言,具备良好的性能和跨平台特性,使得流程设计器可以在多种浏览器和操作系统上运行。 为了更好地理解和使用流程设计器(flex版),我们可以参考提供的博文链接:...

    flex禁止鼠标右键

    /* 其他Flex布局相关的样式 */ user-select: none; /* 阻止选中文本 */ -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Safari 和 Chrome */ -moz-user-select: none; /* Fire...

    Flex3StyleExplorer_V3.0Beta.zip_flex

    Flex3StyleExplorer就是这样一个辅助工具,它允许开发者实验性地调整和查看不同的样式属性,而不必直接编辑源代码。这对于快速原型设计和调试UI样式非常有效。 该压缩包中的Flex3StyleExplorer_V3.0Beta.swf文件是...

    Flex3_Explorer本地文件Flex3 component Explorer

    Flex3 component Explorer的核心是它的组件浏览器功能。这个特性允许用户直观地浏览和尝试各种Flex组件的属性、样式和事件。通过拖拽、调整大小、改变颜色等方式,开发者可以快速预览组件的不同状态,理解它们的行为...

Global site tag (gtag.js) - Google Analytics