Pergunta

Is it possible to detect when a Flash embed object has loaded completely? Are there events that can be subscribed to that work in all browsers?

Foi útil?

Solução

Not directly, but it's easy to do if you have control over the SWF via ExternalInterface. First, in the flashvars for the SWF pass a callback name:

loadedCallback=swfLoadedCallback

Additionally, be sure the SWF has scriptAccess set to sameDomain or all

Next, Define a callback function in your page:

function swfLoadedCallback()
{
   // Note... if these were a real application, you would want 
   //    to use a setTimeout here to avoid Flash choking while 
   //    waiting for a response.
   alert('SWF loaded.  Do something.');
}

Then, in your SWF, add code like this:

import flash.external.ExternalInterface;
import flash.utils.setTimeout;

var params:Object = root.loaderInfo.parameters;
if (params && params.loadedCallback)
{
   // Set timeout to avoid syncronous issues
   setTimeout(function():void {
      if (ExternalInterface.available)
         ExternalInterface.call(params.loadedCallback);
   }, 1);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top