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 进行测试。