首页 > 设计 > WEB开发 > 正文

20.6.BrowserManager解析URL

2023-06-19 21:53:38
字体:
来源:转载
供稿:网友
20.6.1 问题
我想从浏览器的当前URL 中读取并解析数据。
20.6.2 解决办法
使用BrowserManager 和URLUtil 类读取并解析当前页面的URL。
20.6.3 讨论
下面的例子展示了如何通过使用BrowserManager 和URLUtil 类读取并解析当前页URL,同时将解析结果写入一个mx:TextArea 实例中。

URLUtil 类拥有可以帮助你解析当前URL 内不同片断的方法。在Flex 3中使用深度链接的时候,URL 会段为两个部分:基部(base)和片段(fragment)。URL 基部(base)包含了#号左边的所有内容。片段(fragment)则包含了#号右边所有的内容。片段(fragment)用以传递参数给Flex 应用程序或者用于历史管理器。适当创建的片段(fragment) 可以由URLUtil.stringToObject 方法将其包含的所有参数值解析到ActionScript 对象中去,再打散成字符串值。URL 片段(fragment)的每个键-值对都应该用分号(;)分隔开。
+展开
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxmllayout="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
{
//get an instance of the browser manager
var bm:IBrowserManager = BrowserManager.getInstance();
//initialize the browser manager
bm.init();
//output the url parameter values
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";
//convert url parameters to an actionscript object using URLUtil
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";
//parse URL using URLUtil
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="outputleft="10top="10bottom="10right="10"/>
</mx:Application>

如果前面的例子有如下的
URLhttp://localhost:8501/flex3cookbook/main.html#name=Andrew;index=12345;productId=987,结果将会是这样:

Full URL:
http://localhost:8501/flex3cookbook/main.html#name=Andrew;index=12345;productId=987

Base URL:
http://localhost:8501/flex3cookbook/main.html

URL Fragment:
name=Andrew%20Trice;index=12345;productId=987654

Object:
(Object)#0
index = 12345
name = "Andrew"
productId = 987
name:
Andrew
index:
12345
productId:
987
URL Port:
8501
URL Protocol:
http
URL Server:
localhost
URL Server with Port:
localhost:8501
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表