JS和AIR(FLEX)的互相调用详解

前言:最近要在AIR项目中添加使用QQ和Sina登录  但是腾讯和新浪没有提供相关的SDK 所以就只能使用他们的js-SDK来登录  所以这里就涉及到js和AIR的交付问题

开始在百度找好久都没解决问题  发现国内同行都喜欢贴同样的代码  而且还没有经过测试的代码  好了 不吐槽了  上代码

Flex代码

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="absolute" creationComplete="init()">
    <mx:Script>
    <![CDATA[
        private var calledFromJSHandlerFunction:Function = calledFromJSHandler;
        private function init():void{
            html.addEventListener(Event.HTML_DOM_INITIALIZE, domInitialized);//添加Event.HTML_DOM_INITIALIZE类型事件 此处Event.HTML_DOM_INITIALIZE可能会报未定义常量 那么请使用                                                                                                                                flash.events.Event.HTML_DOM_INITIALIZE
            html.location = "htmlwithJS.html";
        }
        private function domInitialized(event:Event):void{
            html.htmlLoader.window.calledFromJSHandlerFunction = calledFromJSHandlerFunction;//在js中注册calledFromJSHandlerFunction函数 当js调用calledFromJSHandlerFunction时 就会触发flex                                                                                                                                                     的calledFromJSHandlerFunction方法  
        }
        private function calledFromJSHandler():void {
            mx.controls.Alert.show("ActionScript called from JavaScript""Alert");
        }
        private function doHTMLAlert( ):void {
            html.htmlLoader.window.calledFromAS();//Flex调用js方法
        }
    ]]>
    </mx:Script>
    <mx:Button id="alertBtn" label="Call JavaScript from ActionScript"
        click="doHTMLAlert()" x="137" y="10"/>
    <mx:HTML id="html" x="137" y="40" width="339"/>
    <mx:Label x="10" y="12" text="Normal MXML Button"/>
    <mx:Label x="28" y="38" text="HTML component"/>
</mx:WindowedApplication>

 

html代码

<html>
    <script language="Javascript">
        function calledFromAS() {//js方法
            alert('Hello from ActionScript');
        }
        </script>
    <body>
        <input type="button"
            value="Call ActionScript from JavaScript"
            οnclick="calledFromJSHandlerFunction()" />//调用flex方法
        <br />
        <input type="button"
            value="Normal JavaScriptAlert"
            οnclick="alert('Hello from JavaScript')">
    </body>
</html>

注:js调用flex 在flex代码注册js函数一定要写在html控件的Event.HTML_DOM_INITIALIZE类型事件里 这样当js调用时才能触发flex对应的方法

出处:http://blog.everythingflex.com/2008/02/25/air-actionscript-javascript-bridge/

 

 

转载于:https://www.cnblogs.com/senge-zhou/p/JS_CALL_AIR.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值