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

如下:

<!DOCTYPE HTML PUBLICd "-//W3C//DTD HTML 4.000%1 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS与Flex交互</title> <script type="text/javascript" src="lib/interaction.js"></script>
<script type="text/javascript" src="lib/swfobject.js"></script> <script> var jsApp; function init(name){
   
             this.name = name;//name="flexDiv" flexDiv为 html页面中 <div id="flexDiv">/div><  的id
             var flashvars = {};
     var params = {};
     attributes = {};
     params.allowScriptAccess = "always";//安全沙箱
     params.scale = "nocale";  
     swfobject.embedSWF("http://192.168.1.102:8088/FlexApp/FlexApp.swf", name,"100%","100%", "10.2.0", "", flashvars, params, attributes); 
    
} </script>
</head>
<body onload="init("flexDiv")" width="100%" height="100%">
<div>     <label> Flex说:</label> <input id="flexSay" /> <input id="jsinput" value="你好Flex" /> <button >Send</button> </div>
<table width="100%" height="100%">
<td> <div id="flexDiv" width="100%" height="100%" style="display:block">
<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>
</div>
</td>
</table>
</body> </html>

二.JavaScript与Flex交互

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

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

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

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

三.代码示例

JSApp.html

<!DOCTYPE HTML PUBLICd "-//W3C//DTD HTML 4.000%1 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>地图接口</title> <script type="text/javascript" src="lib/interaction.js"></script>
<script type="text/javascript" src="lib/swfobject.js"></script> <script> var jsApp; function init(){ jsApp = new LoadFlex("flexDiv");//创建对象 } function sendJS(){ try{ var str = document.getElementById('jsinput').value; jsApp.jsToFlex(str); } catch(e){
alert(e.message);
} } </script>
</head>
<body onload="init()" width="100%" height="100%">
<div>     <label> Flex说:</label> <input id="flexSay" /> <input id="jsinput" value="你好Flex" /> <button onClick="sendJS()">Send</button> </div>
<table width="100%" height="100%">
<td> <div id="flexDiv" width="100%" height="100%" style="display:block">
<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>
</div>
</td>
</table>
</body> </html>

interaction.js

	 function LoadFlex(name){

		this.name = name;
var flashvars = {};
var params = {};
attributes = {};
params.allowScriptAccess = "always";
params.scale = "nocale";
swfobject.embedSWF("http://192.168.1.102:8088/FlexApp/FlexApp.swf", name,"100%","100%", "10.2.0", "", flashvars, params, attributes); this.GetFlex = function(){ var mapName = this.name;
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[mapName];
}else {
return document[mapName];
} } this.jsToFlex = function(str){
try{ var str = this.GetFlex().onHello(str); } catch(e){
alert(e.message); }
} } function flexCall(str){ // alert(str);
document.getElementById("flexSay").value =str
}

FlexApp.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
applicationComplete="init()" creationComplete="oninit()" initialize="oninit()"
viewSourceURL="srcview/index.html">
<fx:Script>
<![CDATA[ import flash.external.ExternalInterface;
import flash.system.Security; import mx.controls.Alert;
import mx.events.FlexEvent;
public function oninit():void{ } public function init():void{ Security.allowDomain("*"); //允许调用SWF文件中的属性和变量
Security.allowInsecureDomain("*"); if (ExternalInterface.available)
{
try{ ExternalInterface.addCallback("onHello",onHelloFlex);//onHello 为javascript中的this.GetFlex().onHello(str); }
catch(error:Error){ Alert.show(error.message);
} }
} public function onHelloFlex(str:String):String{ js.text = str; return "你好javaScript";
} public function onFlexToJS(ste:String):void{ ExternalInterface.call("flexCall",flex.text);//调用javascript中的flexCall()方法 }
]]>
</fx:Script> <fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations> <mx:VBox width="100%" height="100%" horizontalAlign="left" verticalAlign="middle" backgroundColor="#EAE3E3">
<s:Panel width="100%" height="500" chromeColor="#1E1E1E" title="javascript and flex 交互" color="#FCF9F9" fontWeight="bold" fontSize="14">
<mx:VBox height="100%" width="100%">
<mx:HBox height="100%">
<mx:HBox width="270" height="200" paddingTop="10">
<s:Label color="#080808">javaScript说:</s:Label> <s:TextInput id="js" color="#020202"/>
</mx:HBox>
<mx:HBox width="380" height="200" paddingTop="10">
<s:Label color="#060606">Flex说:</s:Label> <s:TextInput text="你好javaScript" id="flex" color="#020202"/>
<mx:Button click="onFlexToJS('hell')" label="send"/>
</mx:HBox>
</mx:HBox>
</mx:VBox>
</s:Panel>
</mx:VBox> </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. Oracle 子查询和组函数练习

    SELECT * FROM emp; SELECT * FROM dept; 1.查询公司员工工资的最大值,最小值,平均值和总和. SELECT MAX(sal) AS 工资最大值, MIN(sal) ...

  2. Group_Concat函数示例

    1. 函数定义: GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [AS ...

  3. 洛谷P3857 [TJOI2008]彩灯 [线性基]

    题目传送门 彩灯 题目描述 Peter女朋友的生日快到了,他亲自设计了一组彩灯,想给女朋友一个惊喜.已知一组彩灯是由一排N个独立的灯泡构成的,并且有M个开关控制它们.从数学的角度看,这一排彩灯的任何一 ...

  4. 首次使用ideal构建maven项目web

    如附件 链接:https://pan.baidu.com/s/1oH-9VfIKnLPjVt-tOH7fZw 提取码:7s5t

  5. zabbix-python api(一)

    获取zabbix token #!/usr/bin/env python #coding=utf-8 import json import urllib2 def Gettoken(server_ip ...

  6. Ubuntu下修改ubuntu源,完成Redis Desktop Manager的安装

    原文地址: http://blog.csdn.net/u013410747/article/details/51706964 免费下载链接:http://pan.baidu.com/s/1cA3jWU ...

  7. 【BZOJ 1880】 [Sdoi2009]Elaxia的路线 (最短路树)

    1880: [Sdoi2009]Elaxia的路线 Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间. ...

  8. CUDA学习笔记3:CUFFT(CUDA提供了封装好的CUFFT库)的使用例子

    一.FFT介绍 傅里叶变换是数字信号处理领域一个很重要的数学变换,它用来实现将信号从时域到频域的变换,在物理学.数论.组合数学.信号处理.概率.统计.密码学.声学.光学等领域有广泛的应用.离散傅里叶变 ...

  9. BZOJ2599 IOI2011Race

    题目:一棵树,每条边有权.求一条路径,权值和等于K,且边的数量最小. 点分治,我们考虑经过根节点的路径,t[x]表示路径长为x时最少的边数,然后每次拿栈记下来清空. 注意先搜索再更新,这样可以避免同一 ...

  10. HDU 1011 Starship Troopers 树形+背包dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1011   题意:每个节点有两个值bug和brain,当清扫该节点的所有bug时就得到brain值,只有当父节点被 ...