Flex导航中内嵌IFrame关闭问题

    技术2022-05-20  29

    在Flex导航中内嵌IFrame,当首次打开,关闭后,切换导航面板,有时会出现IFrame始终悬浮在导航的最前端。

    个人分析原因可能是由于Flex中关闭了导航移除了子组件但是IE并没有彻底的将IFrame从页面中移除,在此用的解决方法是,在Flex中调用js通过IFrame的id将之从IE中删除。具体代码如下。注意:Flex中嵌入的iFrame界面是动态添加使用的ID是动态生成的GUID,如果以组件形式添加例用固定的ID可能会导致iFrame界面重复移除时可能不能够正常移除(分析可能是JS原因,当前ID的元素移除后,再次调用代码移除同一个id的元素时操作无效)。

    在导行的IFrame父容器关闭事件中添加以下代码: <mx:Script> <!--[CDATA[ import com.drumbeatinsight.controls.HTML; import flash.external.ExternalInterface; import mx.utils.UIDUtil; public static const CALL_EXPRESSION:String = "fcCallScript"; [Bindable] public var frameSource:String="http://www.baidu.com"; private var html:HTML=new HTML(); private var newGUID:String=UIDUtil.createUID(); public function onInit():void { html.percentWidth=100; html.percentHeight=100; html.id=newGUID; html.fixTextFieldFocus=false; addChild(html); if (html.source != frameSource) { html.source=frameSource; } } private function onClose():void { var operationString:String="var myhtml=document.getElementById('"+newGUID+"');document.body.removeChild(myhtml);" ExternalInterface.call(CALL_EXPRESSION, operationString); } ]]--> </mx:Script>


    最新回复(0)