Flex与JavaScript交互:调用与响应

4星 · 超过85%的资源 需积分: 9 23 下载量 186 浏览量 更新于2024-09-30 收藏 37KB DOC 举报
"本文主要探讨了Flex与JavaScript之间的通信机制,包括如何在JavaScript中调用Flex的方法以及在Flex中调用JavaScript的两种方法——ExternalInterface和navigateToUrl。" 在Web开发中,Flex常用于创建丰富的图形用户界面,而JavaScript则负责处理网页的交互逻辑。两者之间的通信对于构建复杂的Web应用程序至关重要。下面我们将详细阐述这两个关键知识点。 一、JavaScript调用Flex方法 在Flex应用中,我们使用`ExternalInterface`类来实现JavaScript与Flex的交互。首先,需要在Flex中公开一个方法,并通过`addCallback()`将其添加到可被JavaScript调用的方法列表中。例如: ```actionscript import flash.external.ExternalInterface; public function myFunc():Number { return 42; } public function initApp():void { ExternalInterface.addCallback("myFlexFunction", myFunc); } ``` 在HTML页面中,可以通过JavaScript获取SWF对象的引用,然后调用Flex中的方法: ```html <SCRIPT language='JavaScript' charset='utf-8'> function callApp() { var x = MyFlexApp.myFlexFunction(); alert(x); } </SCRIPT> <button onclick="callApp()">CallApp</button> ``` 当用户点击按钮时,JavaScript会调用Flex的`myFlexFunction`方法,并显示返回值。 二、Flex调用JavaScript Flex调用JavaScript有两种主要方法: 1. ExternalInterface() `ExternalInterface.call()`允许Flex直接执行JavaScript代码。例如,假设有一个JavaScript函数`jsFunction()`,在Flex中调用它的方式如下: ```actionscript if (ExternalInterface.available) { ExternalInterface.call("jsFunction"); } else { trace("ExternalInterface not available"); } ``` 这种方式适用于简单地执行JavaScript函数,传递参数或获取JavaScript的返回值也是可行的。 2. navigateToUrl() 另一种方法是使用`navigateToUrl()`函数,它通常用于发起HTTP请求,但也可用于与JavaScript进行简单的通信。例如,将数据传递给JavaScript函数: ```actionscript var request:URLRequest = new URLRequest(); request.method = URLRequestMethod.GET; request.url = "javascript:jsFunction('参数')"; navigateToURL(request, "_self"); ``` 在这个例子中,`navigateToUrl()`并不实际导航到新的URL,而是执行指定的JavaScript代码。 通过以上两种方式,Flex可以改变HTML页面的样式,调用远程服务,或者与HTML元素进行交互,实现了Flex和JavaScript之间的双向通信,从而构建出更丰富的Web应用程序体验。