BrowserManager的简单应用

BrowserManager是一个Singleton 管理器,用于充当浏览器和应用程序之间的代理。使用它可以访问浏览器地址栏中的URL,这与访问Javascript中的document.location 属性类似。这一节我们将介绍其简单应用。

一、改变HTML页面标题

使用setTitle更改浏览器标题栏中的文本。看如下代码:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
    <mx:Script> 
        <![CDATA[ 
            import mx.managers.IBrowserManager; 
            import mx.managers.BrowserManager; 
            private function changePageTitle(newTitle:String) : void
            { 
                // 取得browser manager单例 
                var bm:IBrowserManager = BrowserManager.getInstance(); 
                // 初始化browser manager 
                bm.init(); 
                // 改变HTML页面标题 
                bm.setTitle( newTitle ); 
            } 
        ]]> 
    </mx:Script> 
    <mx:Hbox> 
        <mx:Button label="按钮一" click="changePageTitle('标题一')"/> 
        <mx:Button label="按钮二" click="changePageTitle('标题二')"/> 
    </mx:Hbox> 
</mx:Application>

二、从浏览器当前URL读取解析数据

这里还需要用到URLUtil类。在Flex 3中使用深层链接(Deep linking)时,链接分成两个部分:基本(base)和片段(fragment)。基本是当前URL显示在浏览器地址栏中时,#之前的部分;而片段是前URL 显示在浏览器地址栏中时,#之后的部分。片段用来将值传给Flex应用,当然也可以用来管理浏览历史。注意用来分隔URL片段中的名称=值对。看如下代码:

<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="absolute"
    creationComplete="parseURL()"> 
  
    <mx:Script> 
        <![CDATA[ 
            import mx.utils.ObjectUtil; 
            import mx.managers.IBrowserManager; 
            import mx.managers.BrowserManager; 
            import mx.utils.URLUtil; 
  
            private function parseURL() : void
            { 
                var bm:IBrowserManager = BrowserManager.getInstance(); 
                bm.init(); 
                // 输出url参数值 
                output.text += "Full URL:\n" + bm.url + "\n\n"; 
                output.text += "Base URL:\n" + bm.base + "\n\n"; 
                output.text += "URL Fragment:\n" + bm.fragment + "\n\n"; 
                // 使用URLUtil将url参数转换成actionscript object 
                var o:Object = URLUtil.stringToObject(bm.fragment); 
                output.text += "Object:\n" + ObjectUtil.toString(o) + "\n\n"; 
                output.text += "name:\n" + o.name + "\n\n"; 
                output.text += "index:\n" + o.index + "\n\n"; 
                output.text += "productId:\n" + o.productId + "\n\n"; 
  
                // 使用URLUtil解析URL 
                output.text += "URL Port:\n" + URLUtil.getPort(bm.url) + "\n\n"; 
                output.text += "URL Protocol:\n" + URLUtil.getProtocol(bm.url) + "\n \n"; 
                output.text += "URL Server:\n" + URLUtil.getServerName(bm.url) + "\n\n"; 
                output.text += "URL Server with Port:\n" + URLUtil.getServerNameWithPort( bm.url ); 
            } 
  
        ]]> 
    </mx:Script> 
    <mx:TextArea id="output" left="10" top="10" bottom="10" right="10"/> 
</mx:Application>

输入服务端URL,如http://localhost/Main.html#firstName=Flying;lastName=Li;age=30 进行测试。

发表评论