Is it possible to trigger click event on Flash object via JavaScript?
-
1See stackoverflow.com/questions/2653710/… , I think you can make some additions to that code so that it will process the click function (also pass X and Y coordinates)XCS– XCS2012-06-08 10:39:55 +00:00Commented Jun 8, 2012 at 10:39
-
@Cristy I don't think that's the same, I think OP is talking about receiving the click (for file open dialog, my guess)Ja͢ck– Ja͢ck2012-06-08 10:40:45 +00:00Commented Jun 8, 2012 at 10:40
-
I want to invoke Click action on Flash object using JS.tunarob– tunarob2012-06-08 10:43:54 +00:00Commented Jun 8, 2012 at 10:43
4 Answers
Yes and no. You can use the ExternalInterface to simulate click events in your Flash project, provided they don't care about the event source (i.e. human or not).
However, one of the features in Flash that's particularly obtuse about the click event source is the File Selection dialog. It's not possible to trigger that without a real click from a real user (as far as the browser is concerned); this would actually be a potential security risk if possible. If I remember correctly, this was possible before FP 9 and we exploited this behavior for our file uploader. This started to cause issues once they fixed it, but I'm glad they did so :)
The typical way to overcome this limitation is by creating a transparent Flash object and positioning a layer over it that shows a button image; the click event will eventually hit the Flash object and trigger a user click event.
4 Comments
I never tested this, so it is just thought
Note please note that you should have a certain div which will capture the clicks.
In Actionscript To simulate a click event, it is possible to use.
element.dispatchEvent(new MouseEvent(MouseEvent.CLICK, true, false));
So why not creating an external function that will dispatch the event once receiving the invoke from JavaScript using externalinterface? Of course this is very rough but it may well work.
Actionscript:
import flash.external.*;
function simulateButtonClick()
{
// Here goes your code
}
ExternalInterface.addCallback("invokeSimulateButtonClick", simulateButtonClick);
Javascript:
ExternalInterface.addCallback("invokeSimulateButtonClick", YOUR_VARIABLES);
Comments
It is possible with Flash ExternalInterface, but you need to write some ActionScript in Flash (.fla) first.
Some references -
Using ExternalInterface in Flash
http://www.adobe.com/devnet/flash/articles/external_interface.html