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?

有帮助吗?

解决方案

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);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top