Bobby's code below is a good start, but it's not robust enough according to 
what I've found in testing. For instance, in IE, there's actually a split 
second where the function is "defined" on the flash swf dom object, but it's 
not actually got anything in it yet (like it's an empty function value). 
There are several complications which ensue.

As an alternative to rolling your own code for waiting for ExternalInterface 
to be ready, there's a library that I wrote and maintain called CheckPlayer 
http://checkplayer.flensed.com/  which wraps around SWFObject and adds some 
additional "advanced" functionality, including in this case, 
ExternalInterface availability checking.

Basically, the strategy is to give the library a specific function name to 
try to call on the swf (**caveat), which it will loop trying to do until the 
try/catch around it *doesn't* fail (in which case you now know for sure the 
function is ready!). Now that the readiness is detected, it calls an a 
callback function you define, which notifies the rest of your code that the 
SWF is fully ready to go.

It's not the prettiest solution, but it was what I found to be most reliable 
in terms of full cross-browser testability.

My suggestion is, rather than trying to figure out these frustrations for 
yourself as I did, you might consider using CheckPlayer. Otherwise, you can 
look to trying to duplicate the logic I implemented for your own code.

--Kyle


**caveat: The only "downside" really (which is usually not a problem) is 
that you have to have some function defined which is ok to be called just 
plain, without any parameters, who's successful calling will not create a 
problem with the state of your SWF (since it'll be guaranteed to be called 
once successfully before the rest of your code continues). So, on my SWF's, 
I usually have some sort of simple "Reset" or "Init" function, which doesn't 
really even have to do much, but is a valid function I can call on the SWF 
without using any parameters, and once it's ready, I know the rest of my 
important functions are also ready.





--------------------------------------------------
From: "Bobby" <[email protected]>
Sent: Wednesday, January 21, 2009 6:58 AM
To: "SWFObject" <[email protected]>
Subject: Re: problems integration swfobject 2.1 and jquery (document.ready)

>
> Your SWF and External Interface functionality will need some time to
> initialize, so calling it directly when the DOM is loaded is too
> quick.
>
> You'd better only call it as soon as it is available, e.g.:
> var obj = document.getElementById("flashCookie");
> (function() {
>    if (obj && typeof obj.JStoASviaExternalInterface != "undefined") {
>        obj.JStoASviaExternalInterface();
>    }
>    else {
>        setTimeout(arguments.callee, 10);
>    }
> })();
>
> >
> 

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

Reply via email to