Flex和JavaScript互操作

Flex最终会生成swf文件以ActiveX的方式部署网页上(html,jsp,asp,aspx等),由于ActiveX是一个独立体它并不能直接获取页面的元素数据,同样asp,aspx等服务端代码也不对它进行操作,这样Flex的信息交互就变得很孤立。在Web用户程序中不同页的信息交换是非常重要,通常这些信息明确下一个页面应该做什么;如果Flex得不到这些信息那么Flex在实际应用中就大打折扣!于是到网上找一下资料,发现自己的担心是多余的。Flex提供相关对象可以灵活地和当前网页的javascript相互进行灵活的调用。那就是说可以通过javascript调用Flex内部的方法,同样在Flex时也可以直接调用页面上相关的javascript方法。

Flex提供了ExternalInterface对象用于和javascript进行互操作。对象分别提供了addCallBack和Cell方法:

addCallBack方法

用于注册一个内部方法用于给javascript调用。

function callMe(name:String):String {
  return name+":" + txtUserName.text;
}

实际上javascript是不能直接调用Flex的内部方法的,那如何使javascript能够调用呢?

首先通过ExternalInterface.addCallback("myFunction", callMe);的方法进行注册,可以把方法放在Applicaion. Initialize的事件中。

方法第一个参数是:外部调用名称就是javascript调用的方法名称。

方法第二个参数是:代理执行Flex的内部函数。

javascript通过以下方式调用:

function Button1_onclick() {
alert(document.all('相关ActiveX控件名称').myFunction('bbq'));
}

Call方法

用于调用当前页面里的javascript方法.

<script id="clientEventHandlersJS" language="javascript">
function getuserid()
{
   return 'henry';
}
</script>

在Flex里可以通过以下方式调用getuserid()方法。

var id:String= ExternalInterface.call("getuserid");

Alert.show(id);

Flex在和javascript整合这方面做得非常好,你并不需要花费太多的工作就能够实现和页面数据元素进行数据交换;同样也可以调用已经有的ajax功能。

接下来学习的是不同页面的Flex应用实例如何共享信息。

最后还是老话一句,有兴趣的朋友多了解一下Flex.

Flex的sdk帮助文件写得还挺详细的,基本上能找到使用的方法。

时间: 2024-09-12 14:56:39

Flex和JavaScript互操作的相关文章

Flex与.NET互操作(十五)

Flex与.NET互操作(十五):使用FluorineFx中的字节数组(ByteArray)实现图片上传 前几天一位朋友问我一个问题,他说:"我用HTTP接口或是WebService接口可以实现图片上传功能,那么用FluorineFx如何实现图片 上传功能呢?",其实仔细看官方文档和示例程序的自己都可以找到答案,实现上传可以有很多种实现,这里我以官方所提供是示例为基 础稍加改动,通过ByteArray类实现图片上传. 首先建立FluorineFx库和网站,在远程服务器类里添加一个处理文

Flex与.NET互操作(十二)

Flex与.NET互操作(十二):FluorineFx.Net的及时通信应用(Remote Shared Objects)(三) 远程共享对象(Remote Shared Objects) 可以用来跟踪.存储.共享以及做多客户端的数据同步操作.只要共享对象上的数据发生了改变 ,将会把最新数据同步到所有连接到该共享对象的应用程序客户端.FluorineFx所提供的远程共享对象(Remote Shared Objects)和FMS的共享 对象的功能是一样,对于熟悉FMS开发的朋友来说,学习Fluor

Flex与.NET互操作(十)

Flex与.NET互操作(十):基于FluorineFx.Net的及时通信应用(Real-time Messaging Applications)(一) 使用FluorineFx.Net开发的每一个实时通讯功能应用都拥有一个应用程序适配器(ApplicationAdapter),用来管理整个实时通讯应用的生 命周期,以及接受和拒绝客户端的连接等.应用程序适配器对象也就相当于是一个Flash媒体服务器应用程序的对象. 使用 FluorineFx.Net开发及时通信应用,我们可以通过ASP.NET网

Flex与.NET互操作(十一)

Flex与.NET互操作(十一):基于FluorineFx.Net的及时通信应用(Remote Procedure Call)(二) FluorineFx.NET提供了完善的RPC(Remote Procedure Call)功能,无论是通过Flash还是Flex开发的客户端应用(.swf)都可以非常简单方便 的采用RPC的方式调用.NET的服务器端方法,.NET的服务器端同样也可以非常方便的呼叫客户端,调用客户端的方法(比如实现系统广播). 一.客户端的RPC(客户端调用服务器端) 要想实现客

Flex与.NET互操作(九)

Flex与.NET互操作(九):FluorineFx.NET的认证(Authentication )与授权(Authorization) FluorineFx.NET的认证(Authentication )与授权(Authorization)和ASP.NET中的大同小异,核实用户的身份既为认证,授权则是确定一个用 户是否有某种执行权限,应用程序可根据用户信息授予和拒绝执行.FluorineFx.NET的认证和授权使用.Net Framework基于角色的安全性的支 持. 比如说我们需要自定义一个

Flex与.NET互操作(七)

Flex与.NET互操作(七):了解FluorineFx的环境配置(远程对象.网关.通道.目的地) 注:本文内容原本计划在上一篇<Flex与.NET互操作(六):Flex和.NET协同开发利器FluorineFx >中写出,考虑到写在一起文章内容太长 故分为两篇. Flex中的远程对象访问,也就是服务端提供一个远程服务对象(RemotingService Object),在Flex客户端通过相应的访问技术去调用远程 对象的过程. 在本系列文章的前面几篇文章中所介绍的访问Webservice的方

Flex与.NET互操作(四)

Flex与.NET互操作(四):使用HttpService.URLReqeust和URLLoader加载/传输数  在前两篇文章中分别介绍了Flex与.NET的WebService之间的数据交互通信知识,本文将介绍另外一种加载数据以及发起请求的方式. ActionScript 3.0中提供的数据加载请求类主要是HTTPService,URLLoader和URLRequest,可以通过他们协同来完成数据加载和请求.下面我么 便来看看这三个类是怎么来完成数据加载工作. 在本地IIS服务器上有如下定义

Flex与.NET互操作(三):基于WebService的数据访问(下)

在上一篇文章<Flex与.NET互操作(二):基于WebService的数据访问(上) >中介绍了通过<mx:WebService>标签来访问Webservice. 实际上我们也可以通过编程的方式动态的访问WebService,Flex SDK为我们提供了WebService类. 使用WebService类来访问WebService其实也就是将<mx:WebService>标签的属性通过类对象的属性形式来表示,相比之下使用 WebService类比使用<mx:We

如何利用Flex调用JavaScript代码

  Flex调用JavaScript代码 在Flex开发中有时候需要调用JS代码,例如关闭浏览器,或者是在某种情况下打开浏览器提示框等等.一般情况下Flex用ExternalInterface类的call()函数来调用JS代码,其中call()函数的参数就是String类型的JS代码段. 你可以调用Html页面中的JavaScript,通过与JavaScript的交互,可以改变Style,调用远程方法.还可以将数据传递给Html页面,处理后再返回给Flex,完成这样的功能主要有两种方法:Exte