4 Replies Latest reply on Aug 16, 2007 1:53 AM by thor918

    FABridge.flash has no properties

    JKohn99 Level 1
      I'm in the process of building a controller swf application that I can embed in html type applications (like jsf) and then use
      the controller to communicate between a flex application and "launched" jsf applications. I'm using the FABridge to
      facilitate the comunication betweem the html based application and the swf controller.

      All appears to work fine the first time, but on subsquent invocations I get a type error : FABridge.flash has no properties.
      This happens in firefox and Internet Explorer.

      Here's the chain of events:

      1) Start by Flex launcher applicaton
      2) Launch a simple htmp app that has my swfcontroller embedded in it.
      3) the swf controller initializes and fetches login credentials from the Launcher in step1.
      4) the simple htmp app displays the login credentials.
      5) I close the htmp page launched in step 2
      6) Launch again, get the tyype error: FABridge.flash has no properties

      Any help would be appreciated.

      Thanks

      Jim Kohn
        • 1. Re: FABridge.flash has no properties
          hchen416
          I have similar experience. Not sure how is the bridge object created/initialized. I tried something like this in the mxml:

          <fab:FABridge xmlns:fab="bridge.*" bridgeName="myBridge" />

          and this failed as well:

          var flexApp = FABridge.myBridge.root();

          The Javascript exception appears to indicate that the bridge object was not initialized.
          Any help from the community to resolve this is highly appreciated. Thanks.

          FYI, am using the IE6 + Flash Player 9. Had similar issue with Firefox 2.0.0.1.
          Thanks.


          FYI, this is the full HTML:

          <!-- 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 language="JavaScript" type="text/javascript" src="bridge/FABridge.js"></script>
          <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 = 0;
          // -----------------------------------------------------------------------------
          // -->
          var flexApp = FABridge.myBridge.root();
          var chart = flexApp.getPanel().getChildByName("chart");
          var dp = [];
          for(var i=0; i < 30; i++) {
          dp.push( {apples: Math.random()*100, oranges: Math.random()*100} );
          }
          chart.setDataProvider(dp);

          </script>
          </head>

          <body scroll="no">
          <script language="JavaScript" type="text/javascript" src="history.js"></script>
          <script language="JavaScript" type="text/javascript">
          <!--

          // Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
          var hasProductInstall = DetectFlashVer(6, 0, 65);

          // Version check based upon the values defined in globals
          var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);


          // Check to see if a player with Flash Product Install is available and the version does not meet the requirements for playback
          if ( hasProductInstall && !hasRequestedVersion ) {
          // MMdoctitle is the stored document.title value used by the installation process to close the window that started the process
          // This is necessary in order to close browser windows that are still utilizing the older version of the player after installation has completed
          // DO NOT MODIFY THE FOLLOWING FOUR LINES
          // Location visited after installation is complete if installation is required
          var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
          var MMredirectURL = window.location;
          document.title = document.title.slice(0, 47) + " - Flash Player Installation";
          var MMdoctitle = document.title;

          AC_FL_RunContent(
          "src", "playerProductInstall",
          "FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"" ,
          "width", "100%",
          "height", "100%",
          "align", "middle",
          "id", "testPrj1",
          "quality", "high",
          "bgcolor", "#869ca7",
          "name", "testPrj1",
          "allowScriptAccess","sameDomain",
          "type", "application/x-shockwave-flash",
          "pluginspage", " http://www.adobe.com/go/getflashplayer"
          );
          } else if (hasRequestedVersion) {
          // if we've detected an acceptable version
          // embed the Flash Content SWF when all tests are passed
          AC_FL_RunContent(
          "src", "testPrj1",
          "width", "100%",
          "height", "100%",
          "align", "middle",
          "id", "testPrj1",
          "quality", "high",
          "bgcolor", "#869ca7",
          "name", "testPrj1",
          "flashvars",'historyUrl=history.htm%3F&lconid=' + lc_id + '%3F&bridgeName=myBridge'+'',
          "allowScriptAccess","sameDomain",
          "type", "application/x-shockwave-flash",
          "pluginspage", " http://www.adobe.com/go/getflashplayer"
          );
          } else { // flash is too old or we can't detect the plugin
          var alternateContent = 'Alternate HTML content should be placed here. '
          + 'This content requires the Adobe Flash Player. '
          + '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
          document.write(alternateContent); // insert non-flash content
          }
          // -->
          </script>
          <noscript>
          <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
          id="testPrj1" width="100%" height="100%"
          codebase=" http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
          <param name="movie" value="testPrj1.swf" />
          <param name="quality" value="high" />
          <param name="bgcolor" value="#869ca7" />
          <param name="flashvars" value="bridgeName=myBridge"/>
          <param name="allowScriptAccess" value="sameDomain" />
          <embed src="testPrj1.swf" quality="high" bgcolor="#869ca7"
          width="100%" height="100%" name="testPrj1" align="middle"
          play="true"
          loop="false"
          quality="high"
          allowScriptAccess="sameDomain"
          type="application/x-shockwave-flash"
          pluginspage=" http://www.adobe.com/go/getflashplayer">
          </embed>
          </object>
          </noscript>
          <iframe name="_history" src="history.htm" frameborder="0" scrolling="no" width="22" height="0"></iframe>
          </body>
          </html>

          • 2. Re: FABridge.flash has no properties
            munkybot
            hchen: don't call:
            var flexApp = FABridge.myBridge.root();
            until your Flex movie is actually in the DOM and initialized. You can do a quick test by wrapping up your FABridge functionality in a javascript function and only calling that function when you click on an HTML button.
            • 3. Re: FABridge.flash has no properties
              odyssey27 Level 1
              You might also try:

              FABridge.addInitializationCallback("mybridge",initFABridge);

              function initFABridge()
              {
              //alert("Ready");
              }

              • 4. FABridge.flash has no properties
                I too have a similer problem.
                I have taken into consideration to not call flex until the object is loaded.
                (using odyssey27 tip)..
                the error only occour in firefox (I'm running version 2.0.0.6)
                the error reported to me is:
                this.target.getRoot is not a function
                -> return this.deserialize(this.target.getRoot());

                strangly the error dissapeared when I used the AC_OETags.js to print out the flash object....