`
strugglesMen
  • 浏览: 115134 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

[zz]Flex组件IFrame中嵌入HTML页面的方法

阅读更多

转载自 shizuwu
最终编辑 shizuwu

功能描述:在Flex中嵌套框架,并且进行数值传递

1、编辑Flex框架组件iFrame.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
    resize="callLater(moveIFrame)"
    move="callLater(moveIFrame)">
    <mx:Script>
    <![CDATA[
        import flash.external.ExternalInterface;
        import flash.geom.Point;
        import flash.net.navigateToURL;
        private var __source: String;
        /**
         * Move iframe through ExternalInterface. The location is determined using localToGlobal()
         * on a Point in the Canvas.
         **/
        private function moveIFrame(): void
        {
            var localPt:Point = new Point(0, 0);
            var globalPt:Point = this.localToGlobal(localPt);
            ExternalInterface.call("moveIFrame", globalPt.x, globalPt.y, this.width, this.height);
        }
        /**
         * The source URL for the IFrame. When set, the URL is loaded through ExternalInterface.
         **/
        public function set source(source: String): void
        {
            if (source)
            {
                if (! ExternalInterface.available)
                {
                    throw new Error("ExternalInterface is not available in this container. Internet Explorer ActiveX, Firefox, Mozilla 1.7.5 and greater, or other browsers that support NPRuntime are required.");
                }
                __source = source;
                ExternalInterface.call("loadIFrame", source);
                moveIFrame();
            }
        }
        public function get source(): String
        {
            return __source;
        }
        /**
         * Whether the IFrame is visible. 
         **/
        override public function set visible(visible: Boolean): void
        {
            super.visible=visible;
            if (visible)
            {
                ExternalInterface.call("showIFrame");
            }
            else 
            {
                ExternalInterface.call("hideIFrame");
            }
        }
    ]]>
    </mx:Script>
</mx:Canvas>
 

2、放置到要使用框架的Flex中index.mxml,并写入引用哪个frame.html

<ui:IFrame id="iFrame" source="frame.html" visible="true" width="100%" height="300"/>

3、在引用框架的Flex生成页index.html里加入:

     <1. wmode set to opaque

     在调用swf的后面加上"wmode","opaque"

     例如:"pluginspage", "http://www.adobe.com/go/getflashplayer",

           "wmode","opaque"

     <2. the moveIFrame,hideIFrame,showIFrame,loadIFrame methods

     <script language="JavaScript" type="text/javascript">

<!--
// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = 9;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 28;
// -----------------------------------------------------------------------------
// -->
function moveIFrame(x,y,w,h) {
    var frameRef=document.getElementById("myFrame");
    frameRef.style.left=x;
    frameRef.style.top=y;
    var iFrameRef=document.getElementById("myIFrame"); 
      iFrameRef.width=w;
      iFrameRef.height=h;
}
function hideIFrame(){
    document.getElementById("myFrame").style.visibility="hidden";
}

function showIFrame(){
    document.getElementById("myFrame").style.visibility="visible";
}
function loadIFrame(url){
      document.getElementById("myFrame").innerHTML = "<iframe id='myIFrame' src='" + url + "'frameborder='0'></iframe>";
}
//要调用的内容,加载前三个就可以了,后面这个函数是用来调用返回值
function getEditorText(){
      return document.getElementById("myIFrame").contentWindow.GetEditorText1();
}
</script>
 

     <3. the 'myFrame' div

         在</body>这前写入:

         <div id="myFrame" style="position:absolute;background-color:transparent;border:0         px;visibility:hidden;"></div>

4、在Flex页面index.mxml输入的函数值,调用index.html中的'getEditorText'函数,并且写入到text1.text中

     text1.text=ExternalInterface.call('getEditorText',param1,param2,param3,...)

     getEditorText:函数名称

     param:参数值

5、在生成页中取得框架中的函数

     框架内的frame.html,放置在head之间:

    function GetEditorText1(){

     return getHTML(params);

     index.html生成页的调用,设置在head之间:

     function getEditorText(){

      return document.getElementById("myIFrame").contentWindow.GetEditorText1();

     }

 

后记:实际中在这里只是调用一个层放在对应位置而已,当我们在Flex中做申缩动作时,层也要跟着改变,我是如此处理的:

     设置move或show事件,当move或show时则调用:iFrame.source = "frame.html"

参考:

http://www.cnflex.cn/html/mxml/20070321/95.html

http://www.cnblogs.com/dannyr/archive/2004/11/24/68026.aspx

http://renaun.com/flex2/posts/flexsearch/index.html(有源码下载)

分享到:
评论

相关推荐

    高仿微信,iOSAppTemplate代码重构 此版本TLChat基于TLKit、 ZZFLEX实现

    在"高仿微信"项目中,ZZFLEX可能被用来构建聊天界面、联系人列表等,提供流畅的滚动效果和动态加载数据的能力。重构时,开发者可能利用ZZFLEX的灵活性优化布局,提高代码可读性和可维护性。 在这个代码重构项目中,...

    ZZFLEX:一个完善的iOS敏捷开发框架,基于UIKit实现,包含常用控件的链式API拓展、一个数据驱动的列表框架、一个事件处理队列

    将项目下载到本地后,把ZZFLEX拖入到你的项目中,即可正常使用。 2、CocoaPods方式 pod 'ZZFLEX', :git =&gt; 'https://github.com/tbl00c/ZZFLEX.git' 功能模块 目前ZZFLEX主要包含以下6个功能模块: 一、Foundation...

    ios-界面构建从未如此简单.zip

    ZZFLEX主要包含两大部分: 1、为常用控件增加了链式API拓展,可以任性的点点点了 UIButton *butt 0, 100, 35)).title(@"hello").titleColor([UIColor blackColor]).cornerRadius(3.0f).view; 2、数据驱动的列表页...

    base zz zz zz zz

    base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz

    COM 组件注册方法

    - **事件和队列组件管理**:MTS提供了发布和提交事件的能力,以及队列组件功能,使得组件之间的通信更加灵活,便于实现多组件间的协作。 在MTS中注册COM组件的详细步骤如下: **步骤一**:通过【开始菜单】→...

    flex安装及环境配置

    Flex提供了强大的数据可视化工具以及丰富的用户界面组件库,使得开发者能够轻松创建动态的应用程序。 #### 二、Flex安装与环境配置流程 ##### 1. 准备工作 在开始安装之前,确保计算机上已经安装了以下软件: - **...

    react-RMind基于ReactHooks与flex布局实现了大部分功能的思维导图

    在IT行业中,React框架是目前前端开发领域中最受欢迎的库之一,它允许开发者构建高性能、可复用且组件化的用户界面。"react-RMind"是一个基于React Hooks和flex布局实现的思维导图工具,它充分利用了React的强大特性...

    arcgis for flex 加载高德地图

    要将高德地图集成到ArcGIS for Flex应用中,首先需要理解ArcGIS的图层概念。图层是地图的基础元素,可以包含各种地理数据,如矢量图层、影像图层或地形图层。在本例中,我们将创建一个自定义图层来显示高德地图的...

    一个完善的iOS UI敏捷开发框架,基于UIKit,包含常用控件的链式API拓展、一个数据驱动的列表框架、一个事件处理队列。.zip

    ZZFLEX是一个强大的iOS UI敏捷开发框架,它基于Apple的UIKit框架进行构建,旨在提高开发者在构建用户界面时的效率和灵活性。这个框架的核心特点包括对常见UI控件的链式API扩展、一个数据驱动的列表展示框架以及一个...

    zz CAD快速计算长度插件

    在CAD中想要快速测量长度,在CAD工具栏找到加载应用程序,再点击加载 加载成功后在输入栏输入“zz”(不分大小写)在选择你需要测量的线段即可。

    ZZ: 时间管理方法(转贴)

    标题中的“ZZ: 时间管理方法(转贴)”表明这是一篇关于时间管理的文章,可能是从其他地方转载而来。从描述中的“博文链接:https://lkfnn.iteye.com/blog/33600”我们可以推测,这是一篇在ITeye技术社区发表的博客...

    用delphi开发的聊天软件,基于Web并结合了网页中嵌入ActiveX技术,就是Delphi的ActiveForm

    在这个特定的项目中,我们讨论的是一个由Delphi开发的聊天软件,该软件利用了Web技术以及网页中嵌入的ActiveX技术,这被称为Delphi的ActiveForm技术。 ActiveForm是Delphi提供的一种特性,它允许开发者将Windows...

    matlab开发-查找图形组件

    在MATLAB开发中,图形组件的使用是创建交互式用户界面和进行图像处理的重要部分。本文将深入探讨如何在MATLAB中查找和操作图形组件,特别是在图像处理与计算机视觉领域中的应用。 首先,"图表连接的组件(连接矩阵...

    中医大夫助理信息系统 zz-doctor

    在“zz-doctor”项目中,我们能看到Android的四大组件——Activity、Service、BroadcastReceiver和ContentProvider的运用。Activity是用户界面的主要构成部分,Service用于后台运行任务,BroadcastReceiver处理系统...

    ZZ561401.CAB

    ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB

    超出NLO QCD的高横向动量的ZZ产生

    使用LoopSim方法,我们合并ZZ和ZZ + jet的NLO QCD结果,并获得ZZ产生的近似NNLO预测。 还包括对ZZ过程的精确胶子融合环平方的贡献。 最重要的是,我们将来自胶子-胶子通道的胶子-融合ZZ + jet贡献添加到我们的合并...

    zz809.com留言本

    在这个压缩包中,我们可以期待找到如下的文件结构和组件: 1. **前端界面文件**:可能包括HTML、CSS和JavaScript文件,用于构建用户界面和处理表单提交。 2. **后端逻辑文件**:可能包含PHP或ASP等服务器端脚本,...

    wincc AX NF ZZ

    wincc SIMATIC WinCC是第一个使用最新的32位技术的过程监视系统,具有良好的开放性和灵活性。 从面市伊始,用户就对SIMATIC WinCC印象深刻。

    vizz-components:在Vizzuality项目中使用的组件的集合

    Vizzuality组件是我们在项目中使用的React组件的集合。 组件 :带有控件,缩放和动画的3D地球。 它使用WebGL和three.js。 :Spinner是一个可以旋转的图标。 如何使用 您需要先配置nodejs和npm,然后才能使用以下...

Global site tag (gtag.js) - Google Analytics