`
tangdonglai
  • 浏览: 8766 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

    博客分类:
  • Flex
阅读更多

项目中要用到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

 

public static var INSERT_FUNCTION_CREATEIFRAME:String = 
            "document.insertScript = function ()" +
            "{ " +
                "if (document." + FUNCTION_CREATEIFRAME + "==null)" + 
                "{" + 
                    FUNCTION_CREATEIFRAME + " = function (frameID, overflowAssignment)" +
                    "{ " +
                        "var bodyID = document.getElementsByTagName(\"body\")[0];" +
                        "var newDiv = document.createElement('div');" +
                        "newDiv.id = frameID;" +
                        "newDiv.style.position ='absolute';" +
                        "newDiv.style.backgroundColor = '#FFFFFF';" + 
                        "newDiv.style.border = '0px';" +
                        "newDiv.style.overflow = overflowAssignment;" +
                       "newDiv.style.zIndex = '-1';"+
                        "newDiv.style.display = 'none';" +
                        "bodyID.appendChild(newDiv);" +
                    "}" +
                "}" +
            "}";

 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

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application backgroundAlpha="0" layout="vertical" xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:flexiframe="com.google.code.flexiframe.*">
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.managers.PopUpManager;
			private function showWin():void{
				Alert.show("TestWin");
			}
			
			private function mOver(e:MouseEvent):void{
				 ExternalInterface.call("function mover(){document.getElementById('ifm0').style.zIndex=\"1\";document.getElementById('ifm0').onmouseout=function (){document.getElementById('ifm0').style.zIndex=\"-1\";}}");
			}
		]]>
	</mx:Script>
	<mx:Style source="style/flex_skins.css" />
	<mx:Button label="test" click="showWin();"/>
	<mx:Panel title="iframe" backgroundAlpha="0" id="pl" width="100%" height="200">
		<flexiframe:IFrame mouseOver="mOver(event)" cachePolicy="off" source="/FlexIframeInWeb/WebContent/a.html" id="ifm" width="100%" height="100%"/>
	</mx:Panel>
</mx:Application>

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

 

  • 大小: 67.7 KB
  • 大小: 49.2 KB
分享到:
评论
33 楼 shil88121 2015-04-23  
我也遇到这个问题解决不了,发我一个啦~~332935200@qq.com
32 楼 ylixang 2013-07-22  
群主,能否也发给我一份1453209546@qq.com
31 楼 qdongl 2012-12-04  
qdongl 写道
我也遇到同样的问题了,照你的方法没有实现效果呢。麻烦可否发一份  367939235@qq.com   不胜感激了!

邮箱:是这个397939235@qq.com  刚打错了
30 楼 qdongl 2012-12-04  
我也遇到同样的问题了,照你的方法没有实现效果呢。麻烦可否发一份  367939235@qq.com   不胜感激了!
29 楼 jsbrml 2012-12-03  
我也遇到这个问题,麻烦发我一份,谢谢  邮箱:1226524271@qq.com
28 楼 hacxer 2012-11-28  
我的邮箱是 hacxer@163.com
27 楼 hacxer 2012-11-28  
大神啊,我做的项目也是被背景层盖住了,求代码啊
26 楼 hacxer 2012-11-28  
同问题啊,求大神分享代码 [b][/[size=xx-small][/size]b]
25 楼 ljy_888 2012-10-15  
可以给178083213@qq.com发一份吗?谢谢!
24 楼 小卒…… 2012-10-11  
您好~我现在正遇到这个问题能发给我一份吗?谢谢 我的邮箱wxlosiit@163.com!!
23 楼 feikai2012 2012-09-21  
wangzhen9814@163.com
22 楼 z915139481 2012-09-19  
按上面写的做没用,请给我一份源码zhu915139481@126.com,谢谢。
21 楼 victorqin 2012-09-06  
我也想要,多谢了,邮箱:bienvenueqin@gmail.com
20 楼 zhangyan_dhcc 2012-08-25  
楼主你好,我按照你的方法试验了多次没有成功,请给我一份源码zhangyan19861015@163.com,谢谢。
19 楼 琛哥哥 2012-08-23  
原来的iframe问题没解决,遗留下来,正好看看,麻烦发我一份
1373476767@qq.com
18 楼 yfisaboy 2012-08-06  
我设置透明了还是显示不出来怎么办呢
17 楼 向前哥 2012-08-01  
碰到此问题。。当我移开鼠标时。。看不到IFRAME内容了。。麻烦发我一份研究下。。420914736@qq.com谢谢了
16 楼 lilei22 2012-07-24  
我在开发中遇到这个问题了,向大侠求教来了,给605531524@qq.com发一份吧,急等中
15 楼 heiheilinlin 2012-07-23  
我最近也在做html嵌入flex页面,我按照你的方法做了,并没有将页面内容显示出来,能不能给我份你的代码参考参考啊?
我的邮箱d1085150455@163.com
14 楼 broha 2012-07-18  
麻烦也给我发一份源码吧,我的邮箱broha@live.cn

相关推荐

    Flex中利用IFrame解决嵌入HTML时Flex组件被遮挡和IFrame被隐藏的问题

    在Flex开发中,有时我们需要将HTML内容嵌入到Flex应用中...通过细心调试和精确设置,可以实现IFrame与Flex组件的和谐共存,创造出功能强大的混合应用程序。在实际开发中,务必根据具体需求进行调整,确保最佳用户体验。

    Flex项目Google IFrame使用

    通过分析和学习"IFrameDemo",你应该能够解决Flex项目中Google IFrame的消失问题,并对如何在Flex应用中有效地使用IFrame有更深入的理解。记得在实际应用中不断测试和优化,确保IFrame的稳定性和性能。

    flex 嵌入完美Iframe

    这个类可能扩展了Flex的基础UIComponent,包含了一些用于加载和控制Iframe的方法和属性。例如,它可能包含了设置HTML源、加载Iframe、获取Iframe内容、以及处理跨域和交互的逻辑。 然而,没有具体的代码内容,我们...

    flex中的iframe源码

    7. **交互性**:虽然iframe在Flex中主要用作静态内容的容器,但也可以尝试通过JavaScript通信(如`ExternalInterface` API)实现Flex与嵌入iframe之间的交互。 在提供的"iframe"文件中,很可能包含了实现上述功能的...

    FLEX弹出框特效,很好很强大

    本主题聚焦于“FLEX弹出框特效”,这通常指的是使用Flexbox创建的交互式对话框或者窗口,它们在用户界面上以弹出的方式显示,提供额外的信息或功能。以下将详细介绍FLEX弹出框特效及其在3.0版本中的应用。 1. **...

    flex IFrame控件的配置使用详细过程

    为了解决这一需求,本篇文章将详细介绍如何利用Google开发的IFrame组件来实现在Flex应用中嵌入并交互JS页面。 #### 二、IFrame组件介绍及安装 ##### 2.1 组件概述 IFrame组件是一种专门用于在Flex应用中嵌入HTML...

    flex-iframe-1.4.6

    flex-iframe-1.4.6就是为此目的而设计的,它提供了在Flex环境中集成iframe的解决方案。 这个压缩包文件"flex-iframe-1.4.6.rar"包含的可能有以下几个关键部分: 1. **源代码**:通常包含AS3(ActionScript 3)代码...

    flex iframe 支持在flash中嵌套入html jsp asp php等

    flex iframe 支持在flash中嵌套入html jsp asp php等flex iframe 支持在flash中嵌套入html jsp asp php等flex iframe 支持在flash中嵌套入html jsp asp php等flex iframe 支持在flash中嵌套入html jsp asp php等flex...

    flex-iframe-1.4.1.zip

    5. **跨域支持**:尽管同源策略限制了iframe与父页面的交互,但Flex-Iframe提供了一种跨域解决方案,允许不同源的页面进行通信。 6. **向下兼容**:1.4.1版本强调了对旧版浏览器的支持,这意味着即使是在IE9这样的...

    iframe for flex!

    文件名`flex-iframe-1.4.5`可能表示这是一个关于`iframe`与`flex`结合使用的版本号为1.4.5的资源库或框架,其中可能包含了实现这些功能的示例代码、文档或工具,帮助开发者更好地理解和应用`iframe`与`flex`的组合。...

    flex-iframe

    在本文中,我们将深入探讨Flex-iframe的原理、使用方法以及它在实际开发中的应用。 1. **Flex框架基础** Flex是一种基于MXML和ActionScript的开源框架,用于构建富互联网应用程序(RIA)。它由Adobe Systems开发,...

    flex中使用iframe

    由于`iframe`或`WebBrowser`组件是Flash Player的一部分,它们与Flex应用程序之间的交互可能受到限制。不过,可以通过监听`FlexEvent.LOAD`事件来了解页面是否成功加载,还可以监听`flash.events.Event.COMPLETE`...

    flex解决JSP遮盖

    它可以帮你更好地控制Flex组件与页面其他元素的关系,包括解决遮盖问题。 5. **Flex与JSP的通信**:如果Flex应用和JSP页面需要紧密交互,可以利用Flex的ExternalInterface或Ajax技术实现两者之间的通信,动态地调整...

    Iframe(Flex嵌入完整网页的类)

    xmlns:flexiframe="com.google.code.flexiframe.*" &lt;flexiframe:IFrame id="helpFrame" source="assets/dreamweaver/help/helpHome.html" height="100%" width="100%" overlayDetection="false" /&gt;

    Flex IFrame

    5. 整合FB3:如果项目涉及到Facebook的FB3,那么可能需要将Flex IFrame与Facebook API集成,以便在Flex应用中嵌入Facebook的功能,如登录、分享等。 文件列表中的"flex+IFrame"可能包含了示例代码、教程或库文件,...

    flex iframe js

    在IT行业中,`flex iframe js`是一个特定的技术领域,它涉及到使用JavaScript与Adobe Flex应用程序进行交互,特别是通过IFrame(内联框架)实现。本文将深入探讨这一技术,包括其工作原理、应用场景以及如何实现AS...

    Jquery实现iframe弹出层,简单实用

    这里我们使用`.show()`和`.hide()`方法来控制弹出层的显示与隐藏,以及`.attr()`来动态设置iframe的`src`属性: ```javascript $(document).ready(function() { // 打开弹出层 function openPopup(url) { $("#...

Global site tag (gtag.js) - Google Analytics