How to pass a reference to a JS function as an argument to call ExternalInterface?

Summary
I want to be able to call a JavaScript function from a Flex application using ExternalInterface and pass a link to another JavaScript function as an argument.

Basic Example
Given the following JavaScript:

function foo(callback)
{
    // ... do some stuff
    callback();
}

function bar()
{
    // do some stuff that should happen after a call to foo
}

I want to call fooflex from my application using ExternalInterface and pass the link to baras a callback.


, foo (, , FB.Connect.showBookmarkDialog), - iframe Facebook . , , Flex. , ExternalInterface.call("FB.Connect.showBookmarkDialog", callback), . FB.Connect.showBookmarkDialog JS, , ( ), JS- .

MXML:

<mx:Button click="showBookmarkDialog();" />

ActionScript:

function showBookmarkDialog() : void
{
    ExternalInterface.registerCallback(
        "onBookmarkDialogClosed", 
        onBookmarkDialogClosed
    );
    ExternalInterface.call(
        "FB.Connect.showBookmarkDialog", 
        /* ref to JS function onBookmarkDialogClosed ? */
    );
}

function onBookmarkDialogClosed(success:Boolean) : void
{
    // sweet, we made it back
}

JavaScript:

function onBookmarkDialogClosed()
{
    var success;
    // determine value of success
    getSWF().onBookmarkDialogClosed(success);
}

...

ExternalInterface.call(
    "FB.Connect.showBookmarkDialog", 
    "onBookmarkDialogClosed"
);

ExternalInterface.call(
    "FB.Connect.showBookmarkDialog", 
    onBookmarkDialogClosed
);

ExternalInterface.call(
    "FB.Connect.showBookmarkDialog",
    function() : void
    {
        ExternalInterface.call("onBookmarkDialogClosed");
    }
);

ExternalInterface.call(
    "FB.Connect.showBookmarkDialog",
    function()
    {
        this["onBookmarkDialogClosed"]();
    }
);

:

  • ExternalInterface , FB JS "onBookmarkDialogClosed" () `, , , .
  • ( `typeof`), , , ; : function function() {} `
+3
1

, , ...

ExternalInterface.call("FB.Connect.showBookmarkDialog(onBookmarkDialogClosed)");
+1

All Articles