Here's the challenge: I have a Flash movie which will be embedded in a page using an unknown DOM ID that I want to be able to identify/store for callback in a JS function.
My ideal user flow would be:
- User clicks button in Flash.
- Flash pauses any animations / video / sounds / etc.
- Flash calls an injected JS function to display a page-covering overlay experience.
- When user closes overlay experience, a callback method on the Flash object is called.
- Flash resumes playback.
The problem is, when AS3 uses the ExternalInterface.call("functionName", args...) method, there doesn't seem to be a DOM event triggered, and thus it is impossible to tell which object called a JS function, so having a "registerMe()" function doesn't seem to work. Basically, the injected JS function has no way to determine which DOM object to call, because the ID of the Flash object is unknown.
[UPDATE] It turns out, a SWF can determine its own url using loaderInfo.url. I'm passing that information to the script that launches the overlay experience so it can be stored for a future comparison against all application/x-shockwave-flash DOM objects. When a match is found, that is the calling SWF. Does anyone see a flaw in this logic? (I'm not nearly as proficient with JS as I am with AS)