8 Replies Latest reply on Jul 8, 2010 5:09 AM by tobi3

    Opening an HTML popup from Flash, not as tab




      I need to open an HTML popup from Flash (using ActionScript in
      Flex 4).


      Thus far I found a solution, and it does work in Safari - a new
      and separate HTML window is popped up (with a new web page).


      private function popUpTheHtmlEditor():void {
        var url:String = "http://www.adobe.com";
        var request:URLRequest = new URLRequest(url);
        try {
          navigateToURL(request, '_blank');
        } catch (e:Error) {
          trace("Error occurred!");


      But in (my) Firefox (with my settings), when I click on the Flash
      (Flex) button, the page is being opened in a new tab.


      I need a solution which pops up the HTML page in a new/separate
      window, as far as possible regardless of the browser (and browser


      BTW, this http://apdevblog.com/problems-using-navigatetourl/ doesn't work,
      clicking on either button brings a new tab (instead of a popup).


      I found an example where a popup is opened from HTML, and it opens a
      separate window (a real popup) in my Firefox:
      -> "Open a requested popup"


      The JavaScript code seems to be:


        OpenRequestedPopup(this.href, this.target); return false;


      with this function def:


        function OpenRequestedPopup(strUrl, strTarget)
          // ...
          if (WindowObjectReferenceOfRequestedPopup == null || WindowObjectReferenceOfRequestedPopup.closed)
          WindowObjectReferenceOfRequestedPopup = window.open(strUrl, strTarget, "top=" + windowTop + ",left=" + windowLeft + ",width=" + windowWidth + ",height=" + windowHeight + ",menubar,toolbar,location,resizable,scrollbars,status");


      How could I call such code from ActionScript? Should this work through
      ExternalInterface? I couldn't even get this to work:


        ExternalInterface.call('alert', 'foo');


      How to get ExternalInterface to work?


      Should I use swfobject.js for embedding the .swf in the HTML wrapper?


      Any other ideas?


      The two files are pasted below.


      Here's the compiler command I'm using:


        mxmlc -output button.swf -target-player 10.0.0 flash_to_editor.mxml


      I'm running the examples locally (as files, not over http). Would it
      help to place the files on a server?




      (Also posting this here because I use Flex and because it hasn't been solved in the ActionScript forum.)


      The files:


      <?xml version="1.0" encoding="UTF-8"?>
        horizontalAlign="center" verticalAlign="middle">
      import mx.controls.Alert;
      import flash.external.ExternalInterface;
      import flash.net.URLRequest;
      // This 'http://www.adobe.com' is just an example URL.
      // Works but opens tab in FF (not a separate window):
      private function popUpTheHtmlEditor():void {
        var url:String = http://www.adobe.com;
        var request:URLRequest = new URLRequest(url);
        try {
          navigateToURL(request, '_blank');
        } catch (e:Error) {
          trace(Error occurred!);
      // Doesn't work:
      // var url:URLRequest = new URLRequest(javascript:alert('foo'); void(0););
      // navigateToURL(url, _self);
      // How to get this to work?
      private function popUpTheHtmlEditor():void {
        ExternalInterface.call('alert', 'foo');
      // How to get this to work?
      private function popUpTheHtmlEditor():void {
        // Or
        // ExternalInterface.call(window.open, http://www.adobe.com, win, height=200,width=300,toolbar=no,scrollbars=yes);
      // Perhaps it's necessary to try different approaches:
      // (As soon as I get two approaches to work.)
      private function popUpTheHtmlEditor():void {
        var s:String;
        if (ExternalInterface.available) {
          // Necessary? Safe?:
          // Security.allowDomain('*');
          s = ExternalInterface.call('launch','http://www.adobe.com');
        } else {
           // TODO: Then try URLRequest?
           s = Wrapper not available;
        <s:Panel title="One way to open the HTML editor"
        width="75%" height="75%">
          <s:Button id="button" label="Open the HTML editor"
          horizontalCenter="0" verticalCenter="0"/>


        xml:lang="en" lang="en">
          <script type="text/javascript">
      function launch(url) {
        //  OpenWin = this.open(url, FOO, toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=no,width=400,height=200);
          <object id="button" name="button" width="550" height="400"
            <param name="movie" value="button.swf" />
            <param name="allowScriptAccess" value="always" />
            <embed id="foo" name="button" src="button.swf" width="550" height="400"></embed>