Flex在IFrame组件之下JS和as的相互调用

Flex嵌入在页面中时,JS和as的相互调用是比较常用的技巧。在普通嵌入下,JS和as相互调用的资料比较常见

import  flash.external.ExternalInterface;

引入ExternalInterface即可解决
详见:http://blog.csdn.net/qq1113130712/article/details/41007009


在嵌入IFrame的情况下,对嵌入的页面进行JS互调,和正常嵌入略有不同

嵌入代码

//    嵌入IFrame
<mx:Panel id="NoticePanel" height="141" layout="absolute" right="10" top="15" title="嵌入调用" width="330">
    <ns1:IFrame top="0" left="0" bottom="0" right="0" id="TestCallJs" enabled="true">
    </ns1:IFrame>
</mx:Panel>

Iframe as to js:

Flex:

//  调用
TestCallJs.callIFrameFunction("TestMsgSend", null, JsCallFinish);

 JavaScript: 

funtion TestMsgSend() {
    return "as to Js Call"
}

当Js函数执行完毕之后,会触发Flex的JsCallFinish函数,JsCallFinish的参数为JS函数的返回值(本示例为“as  to  Js  Call”)。

IFrame js to as:

       IFrame框架下页面的JS回调Flex页面的as函数,资料比较少。

       通过观察嵌入IFrame后的页面可以看出,嵌入了IFrame之后,并不是真正的嵌入Flex中,而是在页面上覆盖一个div嵌套的Frame框架摆放在IFrame的位置。因此,IFrame嵌套页面下的JS调用Flex的as可以看作是网页Frame框架下的JS对主页面的调用。

       Flex

//   函数定义
public function downloadShareFile(FileName:String):void {
    //Alert.show(FileName);
}
//   挂载调用接口
ExternalInterface.addCallback("downloadFile", downloadShareFile);

       JavaScript

function callas() {
    var ascall = 'test call';
    parent.window.document.getElementById("TestCallJs").downloadFile(ascall);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值