[Laszlo-dev] swf9 ExternalInterface.addCallback
Max Carlson
max at openlaszlo.org
Sat Jun 20 12:59:30 PDT 2009
It just means you need a top-level instance with an ID. You can do this
in a script if you want to...
Sarah Allen wrote:
> What does this mean: "You can call any available method in the
> application as long as 'globalreference' can be found in the global
> scope." ?
>
> Do I need to define "globalreference" in a script tag?
>
> Thanks,
> Sarah
>
> On Jun 19, 2009, at 1:20 PM, Max Carlson wrote:
>
>> Yes! See the docs for any app with lzt=deployment, e.g.:
>> http://labs.openlaszlo.org/trunk-nightly/my-apps/copy-of-hello.lzx?lzt=deployment
>>
>>
>> To call a method in an application, use:
>>
>> value =
>> lz.embed.lzapp.callMethod('globalreference.reference.anyMethod(...)')
>>
>> passing a string representation of the method and any arguments you
>> wish to pass. You can call any available method in the application as
>> long as 'globalreference' can be found in the global scope.
>>
>> To call a method in all applications on the page, use:
>>
>> lz.embed.callMethod('globalreference.reference.anyMethod(...)')
>>
>> Sarah Allen wrote:
>>> So, is there any native-LZX way to do this? or is the Flash API the
>>> best I can do for now?
>>> Thanks!
>>> Sarah
>>> On Jun 12, 2009, at 10:12 AM, Henry Minsky wrote:
>>>> You're looking at out of date docs, the new docs say it has two args.
>>>>
>>>> See the docs at
>>>> http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/
>>>>
>>>> addCallback () method
>>>>
>>>> | public static function addCallback(functionName:String
>>>> <http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/String.html>,
>>>> closure:Function
>>>> <http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Function.html>):void
>>>> <http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/specialTypes.html#void>|
>>>>
>>>> * Language Version : * ActionScript 3.0
>>>>
>>>> * Runtime Versions : * AIR 1.0, Flash Player 9
>>>>
>>>> Registers an ActionScript method as callable from the container.
>>>> After a successful invocation of |addCallBack()|, the registered
>>>> function in Flash Player can be called by JavaScript or ActiveX code
>>>> in the container.
>>>>
>>>> *Note:* For /local/ content running in a browser, calls to the
>>>> |ExternalInterface.addCallback()| method work only if the SWF file
>>>> and the containing web page are in the local-trusted security
>>>> sandbox. For more information, see the following:
>>>>
>>>> * The security chapter
>>>> <http://www.adobe.com/go/flashCS3_progAS3_security> in the
>>>> /Programming ActionScript 3.0/ book and the latest comments on
>>>> LiveDocs
>>>> * The Flash Player 9 Security white paper
>>>> <http://www.adobe.com/go/fp9_0_security>
>>>>
>>>> Parameters
>>>>
>>>>
>>>> |functionName:String
>>>> <http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/String.html>|
>>>> — The name by which the container can invoke the function.
>>>>
>>>> |closure:Function
>>>> <http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Function.html>|
>>>> — The function closure to invoke. This could be a free-standing
>>>> function, or it could be a method closure referencing a method of an
>>>> object instance. By passing a method closure, you can direct the
>>>> callback at a method of a particular object instance.
>>>>
>>>>
>>>> Throws
>>>>
>>>> |Error
>>>> <http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Error.html>
>>>> | — The container does not support incoming calls. Incoming calls
>>>> are supported only in Internet Explorer for Windows and browsers
>>>> that use the NPRuntime API such as Mozilla 1.7.5 and later or
>>>> Firefox 1.0 and later.
>>>>
>>>> |SecurityError
>>>> <http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/SecurityError.html>
>>>> | — A callback with the specified name has already been added by
>>>> ActionScript in a sandbox to which you do not have access; you
>>>> cannot overwrite that callback. To work around this problem, rewrite
>>>> the ActionScript that originally called the |addCallback()| method
>>>> so that it also calls the |Security.allowDomain()| method.
>>>>
>>>> |SecurityError
>>>> <http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/SecurityError.html>
>>>> | — The containing environment belongs to a security sandbox to
>>>> which the calling code does not have access. To fix this problem,
>>>> follow these steps:
>>>>
>>>> 1. In the |object| tag for the SWF file in the containing HTML
>>>> page, set the following parameter:
>>>>
>>>> |<param name="allowScriptAccess" value="always" />|
>>>>
>>>> 2. In the SWF file, add the following ActionScript:
>>>>
>>>> |flash.system.Security.allowDomain(/sourceDomain/)|
>>>>
>>>> See also
>>>>
>>>>
>>>>
>>>> On Fri, Jun 12, 2009 at 12:51 PM, Sarah Allen <sarah at ultrasaurus.com
>>>> <mailto:sarah at ultrasaurus.com>> wrote:
>>>>
>>>> I'm seeing a weird compiler error in trunk... might be recent
>>>> regression (it is possible, but unlikely that I somehow left this
>>>> code in a state that had a compiler error a couple of months ago
>>>> when I last looked at this app) I'll be looking at this more, but
>>>> I wanted to send a note in case anyone else is seeing something
>>>> similar or has any ideas.
>>>>
>>>> org.openlaszlo.sc.CompilerError: main.lzx: 41: Error: Incorrect
>>>> number of arguments. Expected no more than 2, in line:
>>>> flash.external.ExternalInterface.addCallback("playMedia", null,
>>>> playMedia)
>>>>
>>>> The Flash docs indicate that there are three arguments:
>>>>
>>>> http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001653.html
>>>>
>>>>
>>>> <http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001653.html>
>>>>
>>>>
>>>> Also, is there any LZX-native way that I should be making this
>>>> call instead of devolving into calling Flash directly?
>>>>
>>>> Thanks in advance,
>>>> Sarah
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Henry Minsky
>>>> Software Architect
>>>> hminsky at laszlosystems.com <mailto:hminsky at laszlosystems.com>
>>>>
>>>>
>>> http://www.ultrasaurus.com
>>
>> --
>> Regards,
>> Max Carlson
>> OpenLaszlo.org
>
> http://www.ultrasaurus.com
>
>
>
--
Regards,
Max Carlson
OpenLaszlo.org
More information about the Laszlo-dev
mailing list