Flex获取参数(一)——window.location.search.substring
第1步:在网页中设置一个链接,如 <a href="test.asp?p1=test1&p2=test2">测试链接一</a>,其中test.asp嵌入了flash
第2步:获取参数,生成flash的mxml文件源码如下:
1、获取所有参数
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
????? xmlns:s="library://ns.adobe.com/flex/spark"
????? xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="init(event)">
?<fx:Declarations>
??<!-- 将非可视元素(例如服务、值对象)放在此处 -->
?</fx:Declarations>
?<fx:Script>??
??<![CDATA[
???//import mx.controls.Alert;
???import mx.events.FlexEvent;
???
???private var params:Object;
???
???private function init(event:FlexEvent):void {
????btnID.addEventListener(MouseEvent.CLICK,clickHandler);
???}
???
???private function clickHandler(evt:Event):void {
????var args:Object = getParams();?
????for(var name:String in args){
?????dispID.text += "name:" + name + "n" + "address:" + args[name] + "n";
????}
???}
???
???private function getParams():Object {
????params = {};?
????var query:String = ExternalInterface.call("window.location.search.substring",1);
????//Alert.show(ExternalInterface.call("window.location.href.toString",1));?
????//Alert.show(query);
????if(query) {
?????var pairs:Array = query.split("&");
?????for(var i:uint=0; i < pairs.length; i++) {
??????var pos:int = pairs[i].indexOf("=");
??????//Alert.show(String(pos));
??????if(pos != -1) {
???????var argname:String = pairs[i].substring(0,pos);
???????var argvalue:String = pairs[i].substring(pos+1);?
???????
???????params[argname] = argvalue;?
??????}
?????}
????}
????return params;
???}
??]]>??
?</fx:Script>??
?<s:Button id="btnID" y="218" label="GetParams" horizontalCenter="0"/>??
?<s:TextArea id="dispID" y="47" width="200" horizontalCenter="0"/>??
</s:Application>?
2、获取指定参数
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
????? xmlns:s="library://ns.adobe.com/flex/spark"
????? xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="init(event)">
?<fx:Declarations>
??<!-- 将非可视元素(例如服务、值对象)放在此处 -->
?</fx:Declarations>
?<fx:Script>??
??<![CDATA[
???import mx.controls.Alert;
???import mx.events.FlexEvent;
???
???private var params:Object;
???
???private function init(event:FlexEvent):void {
????btnID.addEventListener(MouseEvent.CLICK,clickHandler);
???}
???
???private function clickHandler(evt:Event):void {
????var args:Object = getParams();?
????var param1:String=params["test1"];
????Alert.show(param1);
???}
???
???private function getParams():Object {
????params = {};
????var query:String = ExternalInterface.call("window.location.search.substring",1));
????//Alert.show(query);
????if(query) {
?????var pairs:Array = query.split("&");
?????for(var i:uint=0; i < pairs.length; i++) {
??????var pos:int = pairs[i].indexOf("=");
??????//Alert.show(String(pos));
??????if(pos != -1) {
???????var argname:String = pairs[i].substring(0,pos);
???????var argvalue:String = pairs[i].substring(pos+1);
???????
???????params[argname] = argvalue;
??????}
?????}
????}
????return params;
???}
??]]>??
?</fx:Script>??
?<s:Button id="btnID" y="218" label="get test1" horizontalCenter="0"/>??
</s:Application>?
注:如果window.location.search.substring换成window.location.href.toString 则可获取完整的url
参考:
http://www.voidcn.com/article/p-axuyique-dt.html
http://www.cnblogs.com/cos2004/archive/2011/03/30/1999925.html(//或者用for in来遍历)