当前位置: 首页 > news >正文

flex获得html容器传递的url参数值

 

我们经常在Flex程序需要用从外部html向swf文件传递参数,(类似 test.html?name=jex&address=chengdu 地址中问号后面的参数对值)

首先要明确的是,一般我们在使用Flex Builder进行Flex开发时,编译后自动以html容器将swf文件包装起来了,所以一般来说,我们直接运行的是html,而非直接运行生成的swf文件。而Flex应用程序要获取外部html容器传入的参数,通常是用JavaScript来获取到相应参数,再让javaScript传递给ActionScript。

在Flex应用程序中,我们通常要用到ExternalInterface类,ExternalInterface主要用来让ActionScript直接与Flash Player容器进行通信。ExernalInterface类通常作为ActionScript与JavaScript进行通信的桥梁。

为了获取从html传入的URL参数,通常传递的顺序是:html容器—>JavaScript—>ExternalInterface—>ActionScript

 

具体实现:
在Flex中,通过调用ExternalInterface的call方法,参数为要调用的JavaScript函数,并返回JS函数调用的结果。如:

  1. ExternalInterface.call("JavaScript函数");  

 

在JS中,Window对象用来代表一个Web浏览器窗口,而窗口的Location对象则代表了当前显示的URL,于是,要想获取URL中的参数,

通常使用下面的语句:

 

  1. window.location.href.toString  //得到URL的完整文本   
  2.     
  3. window.location.search.substring  //得到问号后面部分的URL文本  

 

:这里window属性引用的Window对象自身,而Window对象的location属性引用的是Location对象。

 


通常的参数对以test.html?name=jex&address=chengdu 这样的形式给出,在获取到问号后面的URL文本后,还需要对其分解,这时有两种途径,一种是分解过程在JS中完成,然后将最终的结果值传递给Flex,另一种是将分解的过程放在Flex中去完成。在这里使用的后者(这样只需写AS代码,而不用去写JS代码了^_^)

           代码如下:

           <?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
    creationComplete="init()"> 
<mx:Script> 
    <![CDATA[ 
        import mx.controls.Alert; 
  
        private var params:Object; 
  
        private function init():void { 
            btnID.addEventListener(MouseEvent.CLICK, clickHandler); 
        } 
  
        private function clickHandler(evt:Event):void { 
            var args:Object = getParams(); 
            if(args.name != null && args.address != null) { 
                dispID.text = "name:" + args.name + "/n" + "address:" + args.address; 
            } 
        } 
  
        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 value:String = pairs[i].substring(pos+1); 
  
                        params[argname] = value; 
                    } 
                } 
            } 
            return params; 
        } 
    ]]> 
</mx:Script> 
    <mx:Button id="btnID" y="118" label="GetParams" horizontalCenter="0"/> 
    <mx:TextArea id="dispID" y="47" width="200" horizontalCenter="0"/>  
</mx:Application> 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PHP去除重复的数组数据
  • java实现对url解析
  • build-essential的作用
  • Java实现在图片上添加水印图片和水印文字
  • POJ2406【KMP-next数组】
  • 大访问量网站的mysql参数设置
  • sizeof判断所占空间大小
  • flex滚动字幕和图片效果
  • 一个IP,一个linux服务器,两个项目,两个域名;如何将两个域名配置到同一个IP的两个项目中。...
  • java生成PDF格式文档
  • VRRP笔记三:配置keepalived为实现haproxy高可用的双主模型配置文件示例:
  • 记一次Arch的安装经历
  • windows xp常用命令集
  • eclipseJVM terminated. Exit code=-1
  • java图片验证码
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Android Volley源码解析
  • bootstrap创建登录注册页面
  • centos安装java运行环境jdk+tomcat
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JS+CSS实现数字滚动
  • miaov-React 最佳入门
  • PAT A1120
  • PHP 小技巧
  • Redash本地开发环境搭建
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Terraform入门 - 1. 安装Terraform
  • web标准化(下)
  • Zsh 开发指南(第十四篇 文件读写)
  • 闭包--闭包作用之保存(一)
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 使用 @font-face
  • 算法-图和图算法
  • 微服务入门【系列视频课程】
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 我们雇佣了一只大猴子...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​secrets --- 生成管理密码的安全随机数​
  • #{}和${}的区别是什么 -- java面试
  • #etcd#安装时出错
  • #pragma pack(1)
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (7) cmake 编译C++程序(二)
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转载)Google Chrome调试JS
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • *Django中的Ajax 纯js的书写样式1
  • .chm格式文件如何阅读