On Sat, Jan 31, 2009 at 12:52 AM, Philip Hutchison <platelu...@gmail.com>wrote:

> As Kyle mentions, sometimes you just have to wait.  The ExternalInterface
> mechanism is not available immediately upon loading the SWF... it takes a
> few (milli)seconds.  If you try to access EI before it has fully loaded,
> you'll get an error.  The simple solution is to ping the SWF until EI is
> ready... I believe this is what Kyle's system CheckPlayer system does.
>

Understood, thanks mate.


>
> - philip
>
>
>
> On Fri, Jan 30, 2009 at 4:50 AM, Getify Solutions, Inc. 
> <get...@gmail.com>wrote:
>
>>
>> Also, to chime in, there are in fact sometimes timing problems (in various
>> browser/embedding environments) with accessing a SWF (even in the ONLOAD
>> event handler) and trying to access it's ExternalInterface functions.
>>  There
>> are a few "recent" threads about that topic.
>>
>> I have a helper library called CheckPlayer (
>> http://checkplayer.flensed.com/)
>> which implements a set of logic to "wait and check for" EI availability,
>> and
>> then when it's definitively ready, it calls a function of your choice
>> (your
>> "callback") to let your code know.
>>
>> So, either using that library, or implementing your own logic similar to
>> that, is the key... you have to "asynchronously" wait for the EI to become
>> ready (after the call to embedSWF) before you are able to make calls to it
>> (especially if embedSWF is called during loading of the page before dom is
>> ready!).
>>
>> --Kyle
>>
>>
>>
>>
>>
>> --------------------------------------------------
>> From: "Aran Rhee" <aran.r...@gmail.com>
>> Sent: Friday, January 30, 2009 3:31 AM
>> To: <swfobject@googlegroups.com>
>> Subject: RE: Trying to access the flash element right after
>> swfobject.embedSWF  results in error
>>
>> >
>> > Embedding / ID - so when the swf gets written to the page, it will
>> > overwrite
>> > the old div etc and take over the ID. You the notes are correct, you are
>> > grabbing the ID of the swf (which WAS the ID of the replacement element)
>> >
>> > callEI() - This was just an example function name to demonstrate that
>> you
>> > could call whatever function you wanted to on the onload event :)
>> >
>> >
>> >
>> > Cheers,
>> > Aran
>> >
>> >
>> >
>> >
>> > -----Original Message-----
>> > From: swfobject@googlegroups.com [mailto:swfobj...@googlegroups.com] On
>> > Behalf Of Mohan
>> > Sent: Friday, 30 January 2009 6:30 PM
>> > To: SWFObject
>> > Subject: Re: Trying to access the flash element right after
>> > swfobject.embedSWF results in error
>> >
>> >
>> >
>> >
>> > On Jan 30, 1:51 pm, "Aran Rhee" <aran.r...@gmail.com> wrote:
>> >> First of all, just checking - Did you overwrite the id with something
>> > other
>> >> than "flashcontent" in your attributes object? If not, then you want:
>> >>
>> >> var swf = document.getElementById("flashcontent");
>> >
>> > Hmm. Thats different from what I have seemed to understand from  the
>> > ""Dynamic publishing" section of the tutorial at
>> > http://www.pipwerks.com/lab/swfobject/ExternalInterface/2.0/index.html.
>> > In the "Notes" it indicates that you grab hold of the SWF by using its
>> > ID and not the id of the element that you pass in the call to
>> > swfobject.embedSWF. Am I reading that wrong ?  The working example at
>> >
>> http://www.pipwerks.com/lab/swfobject/ExternalInterface/2.0/dynamic.html
>> > also uses the SWF ID and that seems to work ok, so I think this is
>> > correct, no ?
>> >
>> >> Also - have you looked at the reference page examples for external
>> >>
>> > interface:
>> http://www.bobbyvandersluis.com/swfobject/testsuite_2_1/test_dynam
>> > ic_...
>> >
>> > Sorry mate - I am getting a 404 when clicking the link you gave
>> > above?
>> >
>> >> l
>> >>
>> >> I think you want to try to call the EI method only once you have an
>> >> onload
>> >> event on the window / page to ensure everything is ready and available,
>> >> so
>> >> you could do something like:
>> >>
>> >> <body onload="callEI();">
>> >
>> > Where can I find more information on this callEl  function ?
>> >
>> >>
>> >> On write a separate onload function within your <head> functions like:
>> >>
>> >> window.onload = function()
>> >> {
>> >> var swf= document.getElementById("ExternalInterfaceExample");
>> >> if (swf && typeof swf.sendTextToFlash != "undefined")
>> >> {
>> >> swf.sendTextToFlash(text);
>> >> }
>> >>
>> >> }
>> >>
>> >> Philip (pipwerks) or others may have a better solution than this...
>> >
>> > Thanks for the suggestions mate.
>> >
>> >
>> >>
>> >> Aran
>> >>
>> >> -----Original Message-----
>> >> From: swfobject@googlegroups.com [mailto:swfobj...@googlegroups.com]
>> On
>> >>
>> >> Behalf Of Mohan
>> >> Sent: Friday, 30 January 2009 4:13 PM
>> >> To: SWFObject
>> >> Subject: Trying to access the flash element right after
>> >> swfobject.embedSWF
>> >> results in error
>> >>
>> >> Hello,
>> >>
>> >> I have been trying to use this great library to embed some flash
>> >> dynamicly and then access the flash API via javascript
>> >> (ExternalInterface). The problem I am having seems to be, because I
>> >> try to access the flash element right after the call to
>> >> swfobject.embedSWF, the element does not seem to be ready yet.
>> >>
>> >> For example, starting with the example code
>> > fromhttp://
>> www.pipwerks.com/lab/swfobject/ExternalInterface/2.0/dynamic.html
>> >> (Thanks for the example!), if I were to modify the following
>> >> javascript in the dynamic.html global scope by trying to get at the
>> >> swf object I get an "swf is null". However the event handling code
>> >> that access the flash element still works ok, indicating that the
>> >> flash did get embedded ok.
>> >>
>> >> swfobject.embedSWF("ExternalInterfaceExample.swf", "flashcontent",
>> >> "550", "200", "8", false, flashvars, params, attributes);
>> >> var swf = document.getElementById("ExternalInterfaceExample"); //added
>> >> line
>> >> swf.sendTextToFlash(text); //trying to use the flash object right
>> >> after embedding it
>> >>
>> >> Is this because the flash element is not ready yet ? How would I
>> >> implement something that needs to be run right after the call to
>> >> swfobject.embedSWF ? The examples I have seen always make use of the
>> >> swfobject in some event handler and not right after the call to
>> >> swfobject.embedSWF. Any help would be greatly appreciated.
>> >>
>> >> Mohan
>> >
>> >
>> >
>> > >
>> >
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"SWFObject" group.
To post to this group, send email to swfobject@googlegroups.com
To unsubscribe from this group, send email to 
swfobject+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/swfobject?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to