Flex动态获取应用部署的项目名称和地址栏的URL

有时候在开发flex项目的过程中,服务端的contextPath还不能完全确定,所以在flex中如果要进行与服务端进行交互的时候不能不把访问URL的项目名称写死。解决这个问题可以在application中利用js的方法获取contextpath,然后赋值给as类的一个静态变量中,之后flex中访问服务端的url引用这个变量即可。下面是一些flex中利用js方法获取URL和URL中一些属性的实例

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
             creationComplete="init()">

 <mx:Script>

  <![CDATA[

   import mx.controls.Alert;

   import mx.utils.URLUtil;

   private function init():void{

    // 测试url为http://127.0.0.1:8080/TestWeb/resources/test/flex/LocationTest.html?loginType=1

    
    // 1 获取URL中带的参数

    // 得到params的值为loginType=1  如果把参数1去掉则结果为?loginType=1 参数1表示从字符串下标为1索引开始截字符串

    var params:String = ExternalInterface.call("window.location.search.substring", 1);// 这里还可以加一个参数表示截取长度

    // 得到paramObj {loginType:'1'}

                var paramObj:Object = URLUtil.stringToObject(params,"&",true);

                var loginType:String = paramObj.loginType;//获取loginType的值

                Alert.show(loginType);//结果为1

               

                //获取完整url

                var href:String = ExternalInterface.call("window.location.href.substring");

                Alert.show(href);//结果为http://127.0.0.1:8080/TestWeb/resources/test/flex/LocationTest.html?loginType=1

               

                // 获取协议

                var protocol:String = ExternalInterface.call("window.location.protocol.substring");

                Alert.show(protocol); // 结果为http:

               

                // 获取主机

                var host:String = ExternalInterface.call("window.location.host.substring");

                Alert.show(host);  // 结果为127.0.0.1:8080

               

                // 获取端口

                var port:String = ExternalInterface.call("window.location.port.substring");

                Alert.show(port);  // 结果为8080

               

                // 获取webroot  应用的contextPath

                var pathname:String = ExternalInterface.call("window.location.pathname.substring",1);//pathname值为TestWeb/resources/test/flex/LocationTest.html?loginType=1

                var webRoot:String = pathname.split("/")[0];

                Alert.show(webRoot);//结果为TestWeb

               

                /**

                * URLUtil.stringToObject方法介绍(具体可查看源码)

                *

                * 从字符串返回对象.字符串包含 name=value 对,它们成为返回对象的动态属性.

                * 这些属性对由指定的 separator 分隔.该方法可转换数字

                * 布尔值 数组(由"[]"定义)以及子类(由"{}"定义).

                * 默认情况下,%XX 格式的 URL 模式将转换为相应的字符串字符. 

     例如: 

     var s:String = "name=xxxx;age=20";

      var o:Object = URLUtil.stringToObject(s, ";", true);

     返回对象:{ name: "xxxx", age: 20 }. 

     

     参数 string:String — 要转换为对象的字符串.

         separator:String (default = "") — 分隔字符串中的 name=value 对的字符.

         decodeURL:Boolean — 是否对字符串中 URL 编码的字符进行解码.

     返回 Object — 包含从传递给该方法的字符串中提取的属性和值的对象 

                *

                **/

   }

  ]]>

 </mx:Script>

</mx:Application>

    


已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页