Flex与JavaScript交互的问题,这里和大家分享一下,主要包括Flex调用JavaScript中的函数和JavaScript调用Flex中的函数两大部分内容。

Flex 与JavaScript 交互,主要依靠Flex的ExternalInterface,其提供了addCallBack和call方法。

一.Html页面嵌套Flex

html嵌套Flex需要用到swfobject.js,下载网址http://code.google.com/p/swfobject/

swfobject.embedSWF(swfUrl, id, width, height, version, expressInstallSwfurl, flashvars, params, attributes)为js加载flex的方法。

详细请看:http://blog.csdn.net/allen_oscar/article/details/9744265

如下:

  1. <!DOCTYPE HTML PUBLICd "-//W3C//DTD HTML 4.000%1 Transitional//EN"
  2. "http://www.w3.org/TR/html4/loose.dtd">
  3. <html >
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>JS与Flex交互</title>
  7.  
  8. <script type="text/javascript" src="lib/interaction.js"></script>
  9. <script type="text/javascript" src="lib/swfobject.js"></script>
  10.  
  11. <script>
  12.  
  13. var jsApp;
  14.  
  15. function init(name){
  16.    
  17.              this.name = name;//name="flexDiv" flexDiv为 html页面中 <div id="flexDiv">/div><  的id
  18.              var flashvars = {};
  19.      var params = {};
  20.      attributes = {};
  21.      params.allowScriptAccess = "always";//安全沙箱
  22.      params.scale = "nocale";  
  23.      swfobject.embedSWF("http://192.168.1.102:8088/FlexApp/FlexApp.swf", name,"100%","100%", "10.2.0", "", flashvars, params, attributes); 
  24.     
  25. }
  26.  
  27. </script>
  28. </head>
  29. <body onload="init("flexDiv")" width="100%" height="100%">
  30. <div>     <label> Flex说:</label> <input id="flexSay" /> <input id="jsinput" value="你好Flex" /> <button >Send</button> </div>
  31. <table width="100%" height="100%">
  32. <td> <div id="flexDiv" width="100%" height="100%" style="display:block">
  33. <a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a>
  34. </div>
  35. </td>
  36. </table>
  37. </body>
  38.  
  39. </html>

二.JavaScript与Flex交互

Flex 与JavaScript 交互,主要依靠Flex的ExternalInterface,其提供了addCallBack和call方法。

  1. ExternalInterface.addCallback("onHello",onHelloFlex);//onHello 为javascript中的方法
  2. ExternalInterface.call("flexCall",flex.text);//调用javascript中的flexCall()方法

ExternalInterface还提供了一些其他的方法:

  1. ExternalInterface.available//对浏览器支持的检查
  2. Security.allowDomain("*"); //允许调用SWF文件中的属性和变量
  3. Security.allowInsecureDomain("*");

三.代码示例

JSApp.html

  1. <!DOCTYPE HTML PUBLICd "-//W3C//DTD HTML 4.000%1 Transitional//EN"
  2. "http://www.w3.org/TR/html4/loose.dtd">
  3. <html >
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>地图接口</title>
  7.  
  8. <script type="text/javascript" src="lib/interaction.js"></script>
  9. <script type="text/javascript" src="lib/swfobject.js"></script>
  10.  
  11. <script>
  12.  
  13. var jsApp;
  14.  
  15. function init(){
  16.  
  17. jsApp = new LoadFlex("flexDiv");//创建对象
  18.  
  19. }
  20.  
  21. function sendJS(){
  22.  
  23. try{
  24.  
  25. var str = document.getElementById('jsinput').value;
  26.  
  27. jsApp.jsToFlex(str);
  28.  
  29. } catch(e){
  30. alert(e.message);
  31. }
  32.  
  33. }
  34.  
  35. </script>
  36. </head>
  37. <body onload="init()" width="100%" height="100%">
  38. <div>     <label> Flex说:</label> <input id="flexSay" /> <input id="jsinput" value="你好Flex" /> <button onClick="sendJS()">Send</button> </div>
  39. <table width="100%" height="100%">
  40. <td> <div id="flexDiv" width="100%" height="100%" style="display:block">
  41. <a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a>
  42. </div>
  43. </td>
  44. </table>
  45. </body>
  46.  
  47. </html>

interaction.js

  1. function LoadFlex(name){
  2.  
  3. this.name = name;
  4. var flashvars = {};
  5. var params = {};
  6. attributes = {};
  7. params.allowScriptAccess = "always";
  8. params.scale = "nocale";
  9. swfobject.embedSWF("http://192.168.1.102:8088/FlexApp/FlexApp.swf", name,"100%","100%", "10.2.0", "", flashvars, params, attributes);
  10.  
  11. this.GetFlex = function(){
  12.  
  13. var mapName = this.name;
  14. if (navigator.appName.indexOf("Microsoft") != -1) {
  15. return window[mapName];
  16. }else {
  17. return document[mapName];
  18. }
  19.  
  20. }
  21.  
  22. this.jsToFlex = function(str){
  23. try{
  24.  
  25. var str = this.GetFlex().onHello(str);
  26.  
  27. } catch(e){
  28. alert(e.message);
  29.  
  30. }
  31. }
  32.  
  33. }
  34.  
  35. function flexCall(str){
  36.  
  37. // alert(str);
  38. document.getElementById("flexSay").value =str
  39. }

FlexApp.mxml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  3. xmlns:s="library://ns.adobe.com/flex/spark"
  4. xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
  5. applicationComplete="init()" creationComplete="oninit()" initialize="oninit()"
  6. viewSourceURL="srcview/index.html">
  7. <fx:Script>
  8. <![CDATA[
  9.  
  10. import flash.external.ExternalInterface;
  11. import flash.system.Security;
  12.  
  13. import mx.controls.Alert;
  14. import mx.events.FlexEvent;
  15. public function oninit():void{
  16.  
  17. }
  18.  
  19. public function init():void{
  20.  
  21. Security.allowDomain("*"); //允许调用SWF文件中的属性和变量
  22. Security.allowInsecureDomain("*");
  23.  
  24. if (ExternalInterface.available)
  25. {
  26. try{
  27.  
  28. ExternalInterface.addCallback("onHello",onHelloFlex);//onHello 为javascript中的this.GetFlex().onHello(str);
  29.  
  30. }
  31. catch(error:Error){
  32.  
  33. Alert.show(error.message);
  34. }
  35.  
  36. }
  37. }
  38.  
  39. public function onHelloFlex(str:String):String{
  40.  
  41. js.text = str;
  42.  
  43. return "你好javaScript";
  44. }
  45.  
  46. public function onFlexToJS(ste:String):void{
  47.  
  48. ExternalInterface.call("flexCall",flex.text);//调用javascript中的flexCall()方法
  49.  
  50. }
  51. ]]>
  52. </fx:Script>
  53.  
  54. <fx:Declarations>
  55. <!-- 将非可视元素(例如服务、值对象)放在此处 -->
  56. </fx:Declarations>
  57.  
  58. <mx:VBox width="100%" height="100%" horizontalAlign="left" verticalAlign="middle" backgroundColor="#EAE3E3">
  59. <s:Panel width="100%" height="500" chromeColor="#1E1E1E" title="javascript and flex 交互" color="#FCF9F9" fontWeight="bold" fontSize="14">
  60. <mx:VBox height="100%" width="100%">
  61. <mx:HBox height="100%">
  62. <mx:HBox width="270" height="200" paddingTop="10">
  63. <s:Label color="#080808">javaScript说:</s:Label> <s:TextInput id="js" color="#020202"/>
  64. </mx:HBox>
  65. <mx:HBox width="380" height="200" paddingTop="10">
  66. <s:Label color="#060606">Flex说:</s:Label> <s:TextInput text="你好javaScript" id="flex" color="#020202"/>
  67. <mx:Button click="onFlexToJS('hell')" label="send"/>
  68. </mx:HBox>
  69. </mx:HBox>
  70. </mx:VBox>
  71. </s:Panel>
  72. </mx:VBox>
  73.  
  74. </mx:Application>

四:图片示例

1.初始化页面

2.点击html页面Send,通过调用this.GetFlex().onHello(str);方法-----》ExternalInterface.addCallback("onHello",onHelloFlex)---》public function onHelloFlex(str:String):String。

3.点击flex页面Send,public function onFlexToJS(ste:String):void--》ExternalInterface.call("flexCall",flex.text)--》function flexCall(str)。

JS 与Flex交互:html中的js 与flex中的actionScript通信的更多相关文章

  1. js与native交互

    js与native交互 UIWebView Native调用JS,使用stringByEvaluatingJavaScriptFromString来解释执行js脚本. //script即为要执行的js ...

  2. JS Flex交互:html嵌套Flex(swf)

    一.html页面嵌套Flex需要用到 swfobject.js swfobject的使用是非常简单的,只需要包含 swfobject.js这个js文件,然后在DOM中插入一些简单的JS代码,就能嵌入F ...

  3. Android中webview和js之间的交互(转)

    http://www.cnblogs.com/leizhenzi/archive/2011/06/29/2093636.html 1.android中利用webview调用网页上的js代码. Andr ...

  4. CEF3开发者系列之外篇——IE中JS与C++交互

    使用IE内核开发客户端产品,系统和前端页面之间的交互,通常给开发和维护带来很大的便利性.但操作系统和前端之间的交互却是比较复杂的.具体来说就是脚本语言和编译语言的交互.在IE内核中html和css虽然 ...

  5. jsp中使用原生js实现异步交互

    Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化.并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做,只有确定需要从服务器读 ...

  6. Android 中 js 和 原生交互

    Android中的WebView 中加载的URL 默认是在手机浏览器中加载的,我们可以覆盖这种默认的动作,让网页在WebView中打开.通过设置WebView的WebViewClent 达到这个效果. ...

  7. aspx 页面中 js 引用与页面后台的数据交互 --【 后台调用 js 】

    js 中调用后台方法   一.用Response.Write方法 Response.Write("<script type='text/javascript'>alert(&qu ...

  8. Js与flash交互:在html页面中用js与MyReport插件交互

    Html页面与flash的加载 如下图,flash是html页面的一个插件节点. js与flash进行交互,首先要处理好html页面和swf的加载问题. Swf调用外部js方法,要确保js方法已存在, ...

  9. iOS与Html5和JS之间的交互---学习笔记五

    首先采用的框架是WebViewJavascriptBridge,采用这套框架可以方便的使iOS与JS交互 一. 流程图(主要介绍思路) 二.iOS端如何使用 首先导入#import "Web ...

随机推荐

  1. WinPhone8 开发(一)[SDK安装+新建项目]

    微软 WinPhone8 开发 winphone8 SDK下载地址,见博客:http://blog.csdn.net/attagain/article/details/8509511 SDK安装界面: ...

  2. openldap quick start guide

    openldap 2.4 在centos 7 x64系统上部署 1 下载源码编译解压tar -xvf xx ./configure make && make install 2 更改配 ...

  3. live555例子程序编译连接时发现函数未定义问题

    1 调整连接库的顺序. 2 更新头文件与所用的库一致

  4. python网页下载

    python 2.7版本下可以运行 import urllib2 def getHtml(url): response = None requset = None headers = {'User-A ...

  5. STL容器 -- Set

    核心: set 是一个数学含义上的集合-----保证了每个数的确定性, 互异性, 不仅如此, set 中的元素还是有序的. 头文件: #include <set> 拓展:由于 set 内的 ...

  6. CodeForces 805B 3-palindrome

    构造. $bbaabbaabbaa......$输出前$n$个即可,这样不需要用到$c$,而且任意相邻三个都不会是回文. #include <cstdio> #include <cm ...

  7. 使用Jedis

    前言 借助Jedis可以在Java上操作Redis. Jedis 到https://mvnrepository.com/去找jar包下载即可. 如果是maven项目: <!-- https:// ...

  8. 深入浅出Spring(三) AOP详解

    上次的博文深入浅出Spring(二) IoC详解中,我为大家简单介绍了一下Spring框架核心内容中的IoC,接下来我们继续讲解另一个核心AOP(Aspect Oriented Programming ...

  9. 应用程序首选项(application preference)及数据存储

    应用程序首选项(application preference)用来存储用户设置,考虑以下案例: a. 假设有一款MP3播放器程序,当用户调节了音量,当下次运行该程序时,可能希望保持上一次调节的音量值. ...

  10. 【BZOJ1098】[POI2007]办公楼biu

    题目一开始看以为和强联通分量有关,后来发现是无向边,其实就是求原图的补图的联通块个数和大小.学习了黄学长的代码,利用链表来优化,其实就是枚举每一个人,然后把和他不相连的人都删去放进同一个联通块里,利用 ...