4 Replies Latest reply on Aug 3, 2009 5:37 AM by Gregory Lafrance

    Call a JavaScript Function on Flex!

    Vitor Wsis Level 1

      Hi,

       

      I have a Javascript file "JSFunctions.js" with this code:

       

      function FullScreen(theURL) {
        window.open(theURL, '', 'fullscreen=yes, scrollbars=auto');
      }

       

      on my Flex application i had:

       

      private var myURL:String="www.google.pt";   


      private function init():void{

      ExternalInterface.call("FullScreen",myURL);

      }

       

      Why doesn't work?

        • 1. Re: Call a JavaScript Function on Flex!
          _Natasha_ Level 4

          Hi,

          try to check is it works if JS in HTML.

           

          Do you get any exceptions?

          • 2. Re: Call a JavaScript Function on Flex!
            Vitor Wsis Level 1

            If i create a JSHTML.html file with this code:

             

            <HEAD>
            <SCRIPT LANGUAGE="JavaScript">
            FullScreen('http://www.google.pt');


            function FullScreen(theURL) {
            window.open(theURL, '', 'fullscreen=yes, scrollbars=auto');
            }

            </script>


            </HEAD>
            <BODY>

             

            and run the file with IE, that work!

             

            If i call on my Flex application, doesn't do nothing!

            I don't have to include "JSFunctions.js" or "JSHTML.html" file on my Flex Application?

            How the application know that the function FullScreen() is on the JSFunction.js file?

            • 3. Re: Call a JavaScript Function on Flex!
              _Natasha_ Level 4

              This JS should be included in html there you've embeded swf.

               

              You can include this file in html-template to automatically including.

              1 person found this helpful
              • 4. Re: Call a JavaScript Function on Flex!
                Gregory Lafrance Level 6

                I got this to work. The full code is below, but here are the highlights.

                 

                If this post answers your question or helps, please mark it as such.

                 

                In my HTML wrapper I had to put this in the <object> and <embed> opening tags, though using "always" might be dangerous from a security perspective:

                 

                 

                allowScriptAccess="always"

                 

                Also in the HTML wrapper, I had the code for the Javascript function:

                <body scroll="no">

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

                <!--

                function FullScreen(theURL) {

                window.open(theURL, '', 'fullscreen=yes, scrollbars=auto');

                }

                ...

                -->

                 

                 

                If your Javascript function is in some other file you may need to make adjustments.

                 

                In the Flex app, I had to put the full URL:

                 

                private var myURL:String="http://www.google.pt";

                 

                ---------- HTML Wrapper ----------

                <!-- saved from url=(0014)about:internet -->
                <html lang="en">
                <!-- 
                Smart developers always View Source. 
                This application was built using Adobe Flex, an open source framework
                for building rich Internet applications that get delivered via the
                Flash Player or to desktops via Adobe AIR. 
                Learn more about Flex at http://flex.org 
                // -->
                <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                <!--  BEGIN Browser History required section -->
                <link rel="stylesheet" type="text/css" href="history/history.css" />
                <!--  END Browser History required section -->
                <title>${title}</title>
                <script src="AC_OETags.js" language="javascript"></script>
                <!--  BEGIN Browser History required section -->
                <script src="history/history.js" language="javascript"></script>
                <!--  END Browser History required section -->
                <style>
                body { margin: 0px; overflow:hidden }
                </style>
                <script language="JavaScript" type="text/javascript">
                <!--
                // -----------------------------------------------------------------------------
                // Globals
                // Major version of Flash required
                var requiredMajorVersion = ${version_major};
                // Minor version of Flash required
                var requiredMinorVersion = ${version_minor};
                // Minor version of Flash required
                var requiredRevision = ${version_revision};
                // -----------------------------------------------------------------------------
                // -->
                </script>
                </head>
                <body scroll="no">
                <script language="JavaScript" type="text/javascript">
                <!--
                function FullScreen(theURL) {
                  window.open(theURL, '', 'fullscreen=yes, scrollbars=auto');
                } 
                // 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);
                if ( hasProductInstall && !hasRequestedVersion ) {
                    // 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", "${width}",
                        "height", "${height}",
                        "align", "middle",
                        "id", "${application}",
                        "quality", "high",
                        "bgcolor", "${bgcolor}",
                        "name", "${application}",
                        "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", "${swf}",
                            "width", "${width}",
                            "height", "${height}",
                            "align", "middle",
                            "id", "${application}",
                            "quality", "high",
                            "bgcolor", "${bgcolor}",
                            "name", "${application}",
                            "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="${application}" width="${width}" height="${height}"
                            codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"
                            allowScriptAccess="always">
                            <param name="movie" value="${swf}.swf" />
                            <param name="quality" value="high" />
                            <param name="bgcolor" value="${bgcolor}" />
                            <param name="allowScriptAccess" value="sameDomain" />
                            <embed src="${swf}.swf" quality="high" bgcolor="${bgcolor}"
                                width="${width}" height="${height}" name="${application}" align="middle"
                                play="true"
                                loop="false"
                                quality="high"
                                allowScriptAccess="sameDomain"
                                type="application/x-shockwave-flash"
                                pluginspage="http://www.adobe.com/go/getflashplayer"
                                allowScriptAccess="always">
                            </embed>
                    </object>
                </noscript>
                </body>
                </html>
                

                 

                ---------- MyFlexApp.mxml ----------

                <?xml version="1.0" encoding="utf-8"?>
                <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                  creationComplete="init();">
                  <mx:Script>
                    <![CDATA[
                      private var myURL:String="http://www.google.pt";
                         
                      public function init():void{
                        ExternalInterface.call("FullScreen",myURL);
                      }
                    ]]>
                  </mx:Script>
                  <mx:Label text="Test Label"/>
                </mx:Application>

                1 person found this helpful