ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          功能描述:在Flex中嵌套框架,并且進行數值傳遞
          1、編輯Flex框架組件iFrame.mxml
          <?xml version="1.0" encoding="utf-8"?>
              <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", "
                     "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"
          參考:

          具體的一個例子——使用IFrame這個框架的一個頁面的代碼如下:

          <!-- saved from url=(0014)about:internet -->
          <html lang="en">
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <title></title>
          <script src="AC_OETags.js" language="javascript"></script>
          <style>
          body { margin: 0px; overflow:hidden }
          </style>


          <script>
          <!--
          function moveIFrame(x,y,w,h) {
          // alert("move to " + x + "," + y + ", " + w + "/" + h);
              var frameRef=document.getElementById("myFrame");
              frameRef.style.left=x;
             frameRef.style.top=y;
              frameRef.width=w;
              frameRef.height=h;
          }

          function hideIFrame(){
          // alert("hide");
              document.getElementById("myFrame").style.visibility="hidden";
          }

          function showIFrame(){
          // alert("show");
              document.getElementById("myFrame").style.visibility="visible";
          }

          function navigateTo(url) {
          // alert("nav to " + url);
          // alert("from " + document.getElementById("myFrame").location);
          document.getElementById("myFrame").src = url;
          }

          -->
          </script>


          <script language="VBScript">
          <!--

          // Catch FS Commands in IE, and pass them to the corresponding JavaScript function.
          Sub flexapp_FSCommand(ByVal command, ByVal str)
              call flexapp_DoFSCommand(command, str)
          end sub

          // -->
          </script>
          </head>
          <body style="margin:0px">

          <object onMouseDown="document.body.focus();"
             classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'
            

          codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,14

          ,0'
             width='100%' height='100%'
             id='flexapp' name='flexapp'>
             <param name='flashvars' value=''>
             <param name='src' value='EXPIframe.swf'>
             <param name="wmode" value="opaque">
             <embed pluginspage='http://www.macromedia.com/go/getflashplayer' width='100%'

          height='100%'
                 flashvars=''
                 src='EXPIframe.swf'
                 name='flexapp'
                 wmode="opaque"
                 swLiveConnect="true"
             />
          </object>

          <iframe id="myFrame" name="myFrame"
              frameborder="0"
              style="position:absolute;background-

          color:transparent;border:0px;visibility:hidden;"></iframe>

          </body>
          </html>

          posted on 2012-03-08 22:48 ivaneeo 閱讀(2557) 評論(1)  編輯  收藏 所屬分類: flex-我酷所以我在

          Feedback

          # re: Flex組件IFrame中嵌入HTML頁面的方法 2014-08-14 16:54 12
          12123  回復  更多評論
            

          主站蜘蛛池模板: 桓台县| 天水市| 大宁县| 额尔古纳市| 淮滨县| 新郑市| 旌德县| 汶川县| 巴彦县| 福鼎市| 大姚县| 梅州市| 泾源县| 绥江县| 叶城县| 视频| 桃园县| 邵武市| 长春市| 司法| 邵东县| 科技| 鄱阳县| 贵德县| 枞阳县| 旬阳县| 湘潭县| 凯里市| 晋中市| 英山县| 革吉县| 上饶市| 光山县| 稻城县| 乡城县| 平果县| 柏乡县| 乌拉特中旗| 桐柏县| 江北区| 荥阳市|