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

来源:互联网 发布:波音757 知乎 编辑:程序博客网 时间:2024/06/05 22:48

有时候在开发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>    


0 0
原创粉丝点击