第一种方法
传值方式
http://host:port/index.jsp#UserID=111
//获取传递参数
var browser:IBrowserManager=BrowserManager.getInstance();
browser.init();
var param:Object=URLUtil.stringToObject(browser.fragment, "&");
我用这种方式在3.2下读不到,但4.0的SDK下是没有问题的
第二种方法
http://host:port/index.jsp?UserID=111
为了保持一致性(我们项目中),我做了兼容,也支持
http://host:port/index.jsp?UserID=111
import flash.external.ExternalInterface;
import mx.utils.StringUtil;
public class QueryString
{
public function QueryString()
{
readQueryString();
}
private var _queryString:String;
private var _all:String;
private var _params:Object;
public function get queryString():String
{
return _queryString;
}
public function get url():String
{
return _all;
}
public function get parameters():Object
{
return _params;
}
private function readQueryString():void
{
_params = {};
try
{
_all = ExternalInterface.call("window.location.href.toString");
var urlParams:String = ExternalInterface.call("window.location.search.substring",1);
if(urlParams == null || StringUtil.trim(urlParams).length == 0 || "DEBUG=TRUE" == urlParams.toUpperCase())
{
var startIndex:int = _all.indexOf("#");
if(startIndex > -1)
urlParams = _all.substring(++startIndex);
}
_queryString = FounderUtils.base64Decode(urlParams);///*FounderUtils.base64Decode(*/ExternalInterface.call("window.location.search.substring", 1)/*)*/;
if(_queryString)
{
var params:Array = _queryString.split('&');
var length:uint = params.length;
for (var i:uint=0,index:int=-1; i<length; i++)
{
var kvPair:String = params[i];
if((index = kvPair.indexOf("=")) > 0)
{
var key:String = kvPair.substring(0,index);
var value:String = kvPair.substring(index+1);
_params[key] = value;
}
}
}
}catch(e:Error) { trace("Some error occured. ExternalInterface doesn't work in Standalone player."); }
}
}
flex Base64编码中如果有汉字,要用 encodeUTFBytes ,使用UTF-8的编码,由其和其它语言交换数据时。