`
qq1113130712
  • 浏览: 7539 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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);
      }


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics