加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex与Google Iframe弹出框被Iframe遮盖问题解决办法

发布时间:2020-12-15 04:46:55 所属栏目:百科 来源:网络整理
导读:原文地址:http://tangdonglai.iteye.com/blog/1291040 截图a 截图b? 项目中要用到Flex与Iframe结合,但是在使用的过程中出现了一些问题,Flex Pop出来的窗口都会被Iframe给遮住,在网上找了很多资料但是都没办法完全解决,网上很多都说在pop窗口时把Iframe

原文地址:http://tangdonglai.iteye.com/blog/1291040

截图a 截图b?

项目中要用到Flex与Iframe结合,但是在使用的过程中出现了一些问题,Flex Pop出来的窗口都会被Iframe给遮住,在网上找了很多资料但是都没办法完全解决,网上很多都说在pop窗口时把Iframe的visbale设置为false,但是这样的解决办法不是很好,所以在看了google的Iframe原代码后,发现Iframe是被动态显示出来的,也就是说Iframe始终会显示在最上层,那么在发现这个问题之后,想了如下办法:
1、首先把Iframe的位置,也就是zIndex设置为-1,让他显示在最底层。
2、光显示在最底层是不够的,因为Iframe会被Flex编译出来的swf所覆盖,所以需要把Flex的背景设置为透明,才能显示出来
3、设置为透明显示出来之后如果想在Iframe上进行操作还需要添加鼠标事件(在鼠标移到iframe上的时候把层的zIndex设置为1,离开时设置为-1)

具体看如下代码:
首先修改Iframe的IFrameExternalCalls.as源代码:
把zIndex设置为-1

?

Iframeexternalcalls.as代码

?

  1. public?static?var?INSERT_FUNCTION_CREATEIFRAME:String?=? ??
  2. ????????????"document.insertScript?=?function?()"?+ ??
  3. ????????????"{?"?+ ??
  4. ????????????????"if?(document."?+?FUNCTION_CREATEIFRAME?+?"==null)"?+? ??
  5. ????????????????"{"?+? ??
  6. ????????????????????FUNCTION_CREATEIFRAME?+?"?=?function?(frameID,?overflowAssignment)"?+ ??
  7. ????????????????????"{?"?+ ??
  8. ????????????????????????"var?bodyID?=?document.getElementsByTagName("body")[0];"?+ ??
  9. ????????????????????????"var?newDiv?=?document.createElement('div');"?+ ??
  10. ????????????????????????"newDiv.id?=?frameID;"?+ ??
  11. ????????????????????????"newDiv.style.position?='absolute';"?+ ??
  12. ????????????????????????"newDiv.style.backgroundColor?=?'#FFFFFF';"?+? ??
  13. ????????????????????????"newDiv.style.border?=?'0px';"?+ ??
  14. ????????????????????????"newDiv.style.overflow?=?overflowAssignment;"?+ ??
  15. ???????????????????????<STRONG>?</STRONG>"newDiv.style.zIndex?=?'-1';"<STRONG>?</STRONG>+ ??
  16. ????????????????????????"newDiv.style.display?=?'none';"?+ ??
  17. ????????????????????????"bodyID.appendChild(newDiv);"?+ ??
  18. ????????????????????"}"?+ ??
  19. ????????????????"}"?+ ??
  20. ????????????"}";??

?2、调用代码

?为Iframe添加mouSEOver事件?Application和Panel两个地方设置为backGroundAlpha为0,也就是设置为透明,关键代码在,Flex调用js的方法中,也就是在鼠标移至Iframe上时,让其zIndex显示为1,这是iframe显示出来之后在用js给当前的div也就是显示出来的Ifram加上事件,当鼠标离开时zIndex设置为-1,我这里没有在Flex的Iframe中设置鼠标离开事件,而是放到js中,那是因为显示出来的div层与Flex的Iframe是一个互斥事件,如果设置了之后,鼠标在Iframe的区域移动,那么鼠标离开事件与鼠标放上去的事件会不断交替执行,性能和感知都会很差。document.getElementById('ifm0')这个ifm0就是你当前页flex的Ifram的Id,在google的源代码中会给这个Id加上一个序列

也就是一个编号,也就变成ifm0了,具体大家看源代码,这个ifm0也就是显示出来的iframe的div的ID

?

Flexiframeinweb.mxml代码

?

  1. <?xml?version="1.0"?encoding="utf-8"?> ??
  2. <mx:Application?backgroundAlpha="0"?layout="vertical"?xmlns:mx="http://www.adobe.com/2006/mxml"?xmlns:flexiframe="com.google.code.flexiframe.*"> ??
  3. ????<mx:Script> ??
  4. ????????<![CDATA[ ??
  5. ????????????import?mx.controls.Alert; ??
  6. ????????????import?mx.managers.PopUpManager; ??
  7. ????????????private?function?showWin():void{ ??
  8. ????????????????Alert.show("TestWin"); ??
  9. ????????????} ??
  10. ???????????? ??
  11. ????????????private?function?mOver(e:MouseEvent):void{ ??
  12. ?????????????????ExternalInterface.call("function?mover(){document.getElementById('ifm0').style.zIndex="1";document.getElementById('ifm0').onmouSEOut=function?(){document.getElementById('ifm0').style.zIndex="-1";}}"); ??
  13. ????????????} ??
  14. ????????]]> ??
  15. ????</mx:Script> ??
  16. ????<mx:Style?source="style/flex_skins.css"?/> ??
  17. ????<mx:Button?label="test"?click="showWin();"/> ??
  18. ????<mx:Panel?title="iframe"?backgroundAlpha="0"?id="pl"?width="100%"?height="200"> ??
  19. ????????<flexiframe:IFrame?mouSEOver="mOver(event)"?cachePolicy="off"?source="/FlexIframeInWeb/WebContent/a.html"?id="ifm"?width="100%"?height="100%"/> ??
  20. ????</mx:Panel> ??
  21. </mx:Application>??

至此困扰了我很久的问题解决了,附上截图,如果有更好的方法,欢迎大家留言交流,由于我使用的是web项目与Flex相结合里面有很多多余的包(大于10M了),上传不上去,如果有需要源代码的请留下邮箱,我会发给大家。

?

  • 大小: 67.7 KB
  • 大小: 49.2 KB
  • 查看图片附件

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读