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 ...
随机推荐
- WinPhone8 开发(一)[SDK安装+新建项目]
微软 WinPhone8 开发 winphone8 SDK下载地址,见博客:http://blog.csdn.net/attagain/article/details/8509511 SDK安装界面: ...
- openldap quick start guide
openldap 2.4 在centos 7 x64系统上部署 1 下载源码编译解压tar -xvf xx ./configure make && make install 2 更改配 ...
- live555例子程序编译连接时发现函数未定义问题
1 调整连接库的顺序. 2 更新头文件与所用的库一致
- python网页下载
python 2.7版本下可以运行 import urllib2 def getHtml(url): response = None requset = None headers = {'User-A ...
- STL容器 -- Set
核心: set 是一个数学含义上的集合-----保证了每个数的确定性, 互异性, 不仅如此, set 中的元素还是有序的. 头文件: #include <set> 拓展:由于 set 内的 ...
- CodeForces 805B 3-palindrome
构造. $bbaabbaabbaa......$输出前$n$个即可,这样不需要用到$c$,而且任意相邻三个都不会是回文. #include <cstdio> #include <cm ...
- 使用Jedis
前言 借助Jedis可以在Java上操作Redis. Jedis 到https://mvnrepository.com/去找jar包下载即可. 如果是maven项目: <!-- https:// ...
- 深入浅出Spring(三) AOP详解
上次的博文深入浅出Spring(二) IoC详解中,我为大家简单介绍了一下Spring框架核心内容中的IoC,接下来我们继续讲解另一个核心AOP(Aspect Oriented Programming ...
- 应用程序首选项(application preference)及数据存储
应用程序首选项(application preference)用来存储用户设置,考虑以下案例: a. 假设有一款MP3播放器程序,当用户调节了音量,当下次运行该程序时,可能希望保持上一次调节的音量值. ...
- 【BZOJ1098】[POI2007]办公楼biu
题目一开始看以为和强联通分量有关,后来发现是无向边,其实就是求原图的补图的联通块个数和大小.学习了黄学长的代码,利用链表来优化,其实就是枚举每一个人,然后把和他不相连的人都删去放进同一个联通块里,利用 ...