加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex4 读取URL参数

发布时间:2020-12-15 03:43:09 所属栏目:百科 来源:网络整理
导读:第一种方法 传值方式 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

第一种方法  

传值方式

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的编码,由其和其它语言交换数据时。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读