JS 与Flex交互:html中的js 与flex中的actionScript通信
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通信的更多相关文章
- js与native交互
		
js与native交互 UIWebView Native调用JS,使用stringByEvaluatingJavaScriptFromString来解释执行js脚本. //script即为要执行的js ...
 - JS Flex交互:html嵌套Flex(swf)
		
一.html页面嵌套Flex需要用到 swfobject.js swfobject的使用是非常简单的,只需要包含 swfobject.js这个js文件,然后在DOM中插入一些简单的JS代码,就能嵌入F ...
 - Android中webview和js之间的交互(转)
		
http://www.cnblogs.com/leizhenzi/archive/2011/06/29/2093636.html 1.android中利用webview调用网页上的js代码. Andr ...
 - CEF3开发者系列之外篇——IE中JS与C++交互
		
使用IE内核开发客户端产品,系统和前端页面之间的交互,通常给开发和维护带来很大的便利性.但操作系统和前端之间的交互却是比较复杂的.具体来说就是脚本语言和编译语言的交互.在IE内核中html和css虽然 ...
 - jsp中使用原生js实现异步交互
		
Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化.并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做,只有确定需要从服务器读 ...
 - Android 中 js 和 原生交互
		
Android中的WebView 中加载的URL 默认是在手机浏览器中加载的,我们可以覆盖这种默认的动作,让网页在WebView中打开.通过设置WebView的WebViewClent 达到这个效果. ...
 - aspx 页面中 js 引用与页面后台的数据交互 --【 后台调用 js 】
		
js 中调用后台方法 一.用Response.Write方法 Response.Write("<script type='text/javascript'>alert(&qu ...
 - Js与flash交互:在html页面中用js与MyReport插件交互
		
Html页面与flash的加载 如下图,flash是html页面的一个插件节点. js与flash进行交互,首先要处理好html页面和swf的加载问题. Swf调用外部js方法,要确保js方法已存在, ...
 - iOS与Html5和JS之间的交互---学习笔记五
		
首先采用的框架是WebViewJavascriptBridge,采用这套框架可以方便的使iOS与JS交互 一. 流程图(主要介绍思路) 二.iOS端如何使用 首先导入#import "Web ...
 
随机推荐
- js过滤检测敏感词汇
			
html: <textarea rows="10" cols="100" id="myDiv"></textarea> ...
 - 易普优APS应用案例:线束行业生产计划排产
			
一.线束行业生产现状 (1)产品种类以及标准繁多,生产计划难协调 线束行业的生产,虽然原材料不多,但线束产品却多达几万种.一般线束企业,虽然不是每个月都生产数万种产品,但每月生产的产品品种在300种以 ...
 - C++ 字符串基本操作
			
C++ 规定,不能直接进行数组名的赋值,因为数组名是一个常量,而结构类型的变量可以赋值,不同结构体的变量不允许相互赋值,即使这两个变量可能具有相同的成员.在程序中不能同时出现无参构造函数和带有全部默认 ...
 - HashMap碰撞问题
			
HashMap是最常用的集合类框架之一,它实现了Map接口,所以存储的元素也是键值对映射的结构,并允许使用null值和null键,其内元素是无序的,如果要保证有序,可以使用LinkedHashMap. ...
 - ACID数据库事务正确执行的四个基本要素的缩写
			
ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).一个支持事务(T ...
 - Unity 2D游戏开发教程之精灵的死亡和重生
			
Unity 2D游戏开发教程之精灵的死亡和重生 精灵的死亡和重生 目前为止,游戏项目里的精灵只有Idle和Walking这两种状态.也就是说,无论精灵在游戏里做什么,它都不会进入其它的状态,如死亡.于 ...
 - Linux内核镜像格式
			
<Linux内核镜像格式> Linux内核有多种格式的镜像,包括vmlinux.Image.zImage.bzImage.uImage.xipImage.bootpImage等. ➤k ...
 - tomcat8.5请求参数限制的问题
			
前段时间遇到这个问题: 包含json字符串类型的参数的http请求失败,返回状态码400,提示invalid character found in the request target. Tomcat ...
 - codevs 5294 挖地雷
			
5294 挖地雷 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 黄金 Gold 题目描述 Description 在一个地图上有N个地窖(N<=20),每个地窖中埋有一 ...
 - MySQL启动项提权
			
关于MySQL的启动项提权,听其名知其意.就是将一段 VBS脚本导入到 C:\Documents and Settings\All Users\「开始」菜单\程序\启动 下,如果管理员重启了服务器, ...