`

[心得教程] Flex与 JS 交互通信方法

    博客分类:
  • flex
 
阅读更多
心得教程类型:

 

navigateToURL() 可以用来打开一个新的浏览器窗口,也可以用来flex和js之间的通信。比如:
打开一个新窗口:
   var url:URLRequest = new URLRequest(http://blog.csdn.net);
   navigateToURL(url, _blank);
这个函数也可以用来执行js,例如:
   var url:URLRequest = new URLRequest(“javascript:window.close()”); 或者:
   var urlLURLRequest = new URLRequest(“javascript:myFun(para1…paran)”)
   myFun()函数是html页面的script部分定义的,函数参数一定要有引号!
   navigateToURL(url, _self);
也可以用来发送email:
   var urlURLRequest = new URLRequest(mailto:xxx@hotmail.com);
   navigateToURL(url, _blank);

//------------------------------------------------------------------------------------

internal function initApp():void   {
      var str:String = "<a target='_blank' href='...'>message here</a>";
      link.htmlText = str;
    }
internal function openUrl():void   {
      navigateToURL(new URLRequest("..."), "_blank");
    }<mx:Button x="72" y="117" label="message" fontSize="13" id="link2" click="openUrl()"/>


JS与Flex交互的几点注意事项

一,在Flex中,addCallack所输出供给JS调用的函数名称不能与JS中己有的函数名称相重复,如下所示:
ExternalInterface.addCallback("play",callThis);
上面这一句在IE中就发生错误,因为“play”这个函数名称已经被分配给DOM元素了,改一个名字就可以了,如下就正确了。

ExternalInterface.addCallback("MyPlay",callThis);
二,在向页面中嵌入swf文件时,要用Adobe的官方JS文件或者版本为2.+的SWFOBJECT。
Adobe的官方JS文件就是AC_OETags.js文件,如果你用的是Flex SDK,可以在Flex SDK安装目录下的templates文件夹中找。在用AC_OETags.js文件时,请把下面这段代码加入到页面中:

function getMovie(movieName){    if (navigator.appName.indexOf("Microsoft")!=-1){    return window[movieName];    } else {    return document[movieName];    }}
用下面的代码调用Flex中的命令:

getMovie('MyFlex').MyPlay();
如果使用的是SWFOBJECT,请使用2.0或2.0以上的版本,使用方法可以查看《翻译:SWFOBJECT 2.0官方文档》,然后使用如下语句调用Flex中的命令:

swfobject.getObjectById("MyFlex").MyPlay();
三,Flex中调用“init()”语句的命令最好放在“applicationComplete”中。
因为有时JS调用Flex的命令中需要用到Flex的组件做出反应,如果用creationComplete 调用“init()”有可能会发错,所以最好是用applicationComplete。creationComplete是在组件定义完成并已经在显示列表时触发,而applicationComplete是在所有的组件初始化完成并显示时触发。
四,注意页面文件编码格式即文件的encoding类型,这个本来不算问题的,但却让我碰到了,文件编码格式不对称有时在IE中显示不了内容。  一、在JavaScript中调用Flex方法在Flex中可以用ExternalInterface来调用Flex的方法,途径是1.通过在Flex应用可调用方法列表中添加指定的公用方法。在Flex应用中通过调用addCallback()可以把一个方法添加到此列表中。addCallback将一个ActionScript的方法注册为一个JavaScript和VBScript可以调用的方法。addCallback()函数的定义如下:addCallback(function_name:String, closure:Function):voidfunction_name参数就是在Html页面中脚本调用的方法名。closure参数是要调用的本地方法,这个参数可以是一个方法也可以是对象实例。举个例子:<mx:Script>     import flash.external.*;     public function myFunc():Number {         return 42;     }     public function initApp():void {         ExternalInterface.addCallback("myFlexFunction",myFunc);     }</mx:Script>2.那么在Html页面中,先获得SWF对象的引用,也就是用<object .../>声明的Swf的Id属性,比如说是MyFlexApp。然后就可以用以下方式调用Flex中的方法。<SCRIPT language='JavaScript' charset='utf-8'>     function callApp() {         var x = MyFlexApp.myFlexFunction();         alert(x);     }</SCRIPT><button onclick="callApp()">Call App</button> 二、在Flex中调用 JavaScript你 可以调用Html页面中的JavaScript,通过与JavaScript的交互,可以改变Style,调用远程方法。还可以将数据传递给Html页 面,处理后再返回给Flex,完成这样的功能主要有两种方法:ExternalInterface()和navigateToUrl()。在Flex中调用JavaScript最简单的方法是使用ExternalInterface(),可以使用此API调用任意JavaScript,传递参数,获得返回值,如果调用失败,Flex抛出一个异常。ExternalInterface封装了对浏览器支持的检查,可以用available属性来查看。ExternalInterface的使用非常简单,语法如下:flash.external.ExternalInterface.call(function_name: String[, arg1, ...]):Object;参数function_name是要调用的JavaScript的函数名,后面的参数是JavaScript需要的参数。举个例子说明如何调用JavaScript函数Flex应用中,添加如下方法:<mx:Script><?xml version="1.0" encoding="iso-8859-1"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">     <mx:Script>         import flash.external.*;              public function callWrapper():void {             var f:String = "changeDocumentTitle";             var m:String = ExternalInterface.call(f,"New Title");             trace(m);          }     </mx:Script>     <mx:Button label="Change Document Title" click="callWrapper()"/></mx:Application>Html页面中有如下函数定义:<SCRIPT LANGUAGE="JavaScript">     function changeDocumentTitle(a) {         window.document.title=a;         return "successful";     }</SCRIPT>
    分享到:
    评论

    相关推荐

      flex与JS交互示例

      5. **实际应用**:Flex与JavaScript的交互广泛应用于网页中的数据交换、用户交互、页面导航等场景。例如,Flex可以用于复杂的计算或图形渲染,而JavaScript则负责处理DOM操作和页面逻辑。 在提供的示例"flexWithJS...

      flex与js交互2

      ### Flex与JavaScript交互详解 #### 一、引言 随着Web技术的发展,不同语言之间的通信变得尤为重要。在Flex与HTML的结合中,Flex通常作为富客户端应用,而JavaScript则负责处理网页逻辑。为了实现二者之间的无缝...

      Flex与JS交互

      这种交互性极大地扩展了富互联网应用(RIA)的功能,使得开发者能够利用Flex的强大图形和动画能力,同时利用JavaScript与网页环境的紧密集成。 ActionScript是Flex的核心编程语言,它是基于ECMAScript的一个方言,...

      flex和javascript交互例子

      在Flex中,我们可以使用`ExternalInterface`类来与JavaScript进行交互。`ExternalInterface.addCallback`方法允许我们在JavaScript中调用Flex组件的方法,而`ExternalInterface.call`方法则用于在Flex中调用...

      flex 与 js 通信的小例子

      这种通信方式使得Flex应用能够利用JavaScript与DOM或浏览器API进行交互。 2. 示例代码分析:在“JS2Flex”这个示例中,可能包含两个部分,即Flex的ActionScript代码和HTML页面中的JavaScript代码。ActionScript代码...

      flex与js交互 关于ExternalInterface使用的小例子

      标题“flex与js交互 关于ExternalInterface使用的小例子”指出了本文将探讨如何使用Flex的ExternalInterface类与JavaScript进行通信。ExternalInterface是Flex提供的一个API,允许ActionScript(Flex的主要编程语言...

      flex与ajax交互、flex与javascript交互.docx

      本文将详细介绍如何使用Flex与Ajax进行交互以及如何实现Flex与JavaScript之间的通信。 #### 二、Flex-AjaxBridge技术概述 Flex-AjaxBridge技术是一种用于在Flex应用和基于JavaScript的Ajax应用之间进行通信的技术...

      flex 和 js 交互

      1. **数据交换**:Flex可以利用JavaScript与服务器进行异步通信,比如使用Ajax技术更新数据,或者获取网页上的实时信息。 2. **用户界面交互**:当用户在Flex组件上进行操作时,可以触发JavaScript事件,更新HTML...

      Flex与JavaScript交互实例

      Flex与JavaScript交互是一种常见的技术,它允许在Adobe Flex(基于ActionScript 3的富互联网应用程序框架)和网页中的JavaScript之间进行通信。这种交互性对于构建混合型应用,特别是在需要利用浏览器内核特性的Web...

      flex与js交互浅析.docx

      总结来说,Flex与JavaScript的交互提供了双向通信的能力,使得Flash组件可以利用JavaScript与Web页面深度集成,同时也能够调用Flash应用的高级功能。这种交互方式在创建动态、交互性强的Web应用时非常有用。不过,...

      Flex与后台交互的方法

      Flex与后台交互的方法是其核心功能之一,确保前端用户界面与后端数据服务之间的无缝通信。以下将详细介绍Flex与后台交互的常见方法和相关知识点。 1. **AMF (Action Message Format)** AMF是Flex与服务器之间进行...

      flex 与JS的通信

      Flex与JavaScript(JS)之间的通信是Web开发中的一个重要技术,特别是在构建富互联网应用程序(RIA)时。本项目提供了一个完整的示例,展示了如何在Flex应用和JavaScript之间建立交互,以及如何通过Flex调用...

      Flex与.NET交互

      Flex与.NET交互是一种常见的跨平台应用开发场景,它允许基于Adobe Flex的前端应用程序与Microsoft .NET框架后端服务进行通信。这种交互使得开发者能够利用Flex的富互联网应用(RIA)特性与.NET的强大后端功能相结合...

      flex和javascript交互

      在Flex与JavaScript进行交互时,可以通过`ExternalInterface`实现从JavaScript调用Flex中的方法。这主要是通过向Flex应用注册特定的公共方法来完成的。这些方法可以通过`addCallback()`函数添加到可被外部脚本访问的...

      Flex与Java的交互

      在本文中,我们将深入探讨如何使用Flex 4与Java进行通信,并通过三种不同的方法实现这一目标:RemoteObject、HTTPService和WebService。 1. Flex与普通Java类通信:RemoteObject RemoteObject是Flex中用于与远程...

      Flash flex与JS通信

      描述中提到的"flex与Js 通信 相互调用"是指在Flex应用中可以调用JavaScript函数,同时JavaScript也可以调用Flex应用内的方法。这是一个双向的交互过程。例如,你可能需要在Flex应用中获取用户在HTML表单中的输入,...

      C#与flex交互

      - **Flex使用代理方法通信C#**:在Flex的事件处理函数中,通过代理类调用C#的方法,并传递参数。 - **C#端CsServer类保存窗体对象**:在C#的CsServer类中,通常会保存一个对C#主窗体的引用,以便能够访问C#的成员...

      javascript与flex交互

      ### JavaScript与Flex交互知识点 #### 一、简介 在Web开发领域中,JavaScript与Flex的交互是一个非常实用且重要的技术组合。Adobe Flex是一种用于构建和部署丰富的互联网应用程序(RIA)的强大框架,它支持多种...

      Flex和java交互的示例代码

      ### Flex与Java交互知识点 #### 一、简介 在Flex与Java进行交互的过程中,主要涉及到的是前后端的数据传输。本文将详细介绍如何通过Flex与Java进行数据交换,包括Flex客户端的实现方式、Java后端的数据处理逻辑,...

      Flex 与javascript交互、C#读写Cookie

      为了解决这个问题,Adobe引入了`ExternalInterface` API,使得Flex可以调用JavaScript函数,同时JavaScript也可以调用Flex组件的方法,实现了两者之间的双向通信。 在实现Flex与JavaScript交互时,你需要: 1. 在...

    Global site tag (gtag.js) - Google Analytics