Javascript :: Event Not Bubbling In Some Browsers When Clicked On Flash
Jul 21, 2010
Environment:
Windows 7,
Internet Explorer 8,
Flash ActiveX 10.1.53.64,
wmode=transparent
Just wrote a small test page that you can load in IE and Firefox or any other Browser.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
[Code].....
So clicking any colored shape should produce an alert (except for the green one in IE, not sure why but I hope that's off topic and not related to my issue).
Clicking the Flash container in Firefox will work Perfectly fine. You should get alert boxes in this order containing: span, div and body. Flash bubbles the event to the HTML. But this is not happening in IE.
So why is Flash in IE not bubbling events to HTML?
Edit: As mentioned by Andy E this behavior can also bee seen in Google Chrome which to my knowledge is not using ActiveX to embed the flash movie into the page.
In IE, if flash has focus, and receives a keydown event, it does not appear to bubble the event up through the DOM (I can't capture the event by listening on document, however the same listener can capture key events from html siblings, so I know my listener is working).
However, some other plugins on the page (I am looking at you windows media player) still respond to key events that initiate in flash (and I need to prevent that from happening)! It seems that the key event initiated in flash takes the bubble express highway straight to the top (where the top is whatever is above document in the DOM hierarchy). I have tried terminating the events in as3, and tried different wmodes... neither approach works.
In IE, if flash has focus, and receives a keydown event, it does not appear to bubble the event up through the DOM (I can't capture the event by listening on document, however the same listener can capture key events from html siblings, so I know my listener is working).However, some other plugins on the page (I am looking at you windows media player) still respond to key events that initiate in flash (and I need to prevent that from happening)! It seems that the key event initiated in flash takes the bubble express highway straight to the top (where the top is whatever is above document in the DOM hierarchy).I have tried terminating the events in as3, and tried different wmodes... neither approach worls. Is there something I might have missed?
I have a MovieClip which contains 4 Buttons:When the user mouses out of the container, it shoulddisappear:this.resolutions.addEventListener(MouseEvent.MOUSE_OUT,this.resolutionsClose);When the user mouses out of any of the 4 Buttons, the event bubbles up to the container. This is not the expected behavior. How do I stop this propagation when none of the 4 Buttons have mouse out handlers?
I have searched on the Internet and didn't find any clue on how to do so, any idea ? I don't want flex only flash (my objects are not visual components).
I know the difference between the two, but I never felt the need to use the bubbling feature. If I want to listen to an event from a deeply nested children, I always use the capture phase. Could someone explain to me why I should rather use bubbling, its advantages, and maybe show me a situation in which bubbling would be the only solution?
I have a movie clip (cover) which covers another movie clip (stuff).I have set up Mouse Over on the Cover movie clip so that when you mouse over it, it tweens off of the Stuff movie clip.Then i have Mouse out set up on the Stuff movie clip so when you mouse out of it, the Cover clip tweens back in..
Now when I mouse over a MC that is inside the Stuff movie clip..it triggers the mouse out for the Stuff movie clip. this is undesired.I need my mouse to be active inside the Stuff movie, so mouseChildren = false doesn't work,because i then can not click on things inside the stuff movie clip.Right now i have managed to work around this by running a loop for each child inside the stuff, adding an event listener and telling the tween to stop on those events,but this won't work for children of those children without looping again.. and the children of those children's children would need looped as well... The question is.. How do I make a child movie clip not trigger the mouse out for it's parent(s)?
I have a content clip that gets replaced by a movieClip from the library every time a button is clicked. Some of the content sections contain video. Within the video is a custom event firing that bubbles up through its parent clips all the way until it gets to the clip that was added to the stage on user click. It never goes beyond the content clip to the stage, where I need the listener. Isn't an event supposed to bubble all the way up to the stage? Why would it ever stop?The code is in 10 different places in 10 different files or else I'd post it.
I can't figure out why the event listener callback function isn't being fired when a child object is being clicked. Since the "SelectionPoint" object is a child of this class, shouldn't the listener get notified of the MouseEvent.CLICK event during the capture phase?
My site has a jQuery drop-down navigation menu and that is displayed beneath the Flash. How can I display the navigation menu above the Flash object? I tried with setting wmode="transparent" but it is not work.
I'd like to create an animated background for my latest gig using Flash. My only issue (as of right now) is different browser sizes. I know a way to make a standard background resize (meaning no nasty scroll bars) using Javascript, but it's not working with the embedded movie.
What is the difference between event.bubbles to false for any event, And Setting event.stopPropagaion() or stopImmidiatePropagation() while handling event? I am using flex4 with as3.
"allows child clips to receive events despite the fact that a parent might make use of them as well, something not possible with the normal convention of handling button events where no child movie clip ever receives button events if a parent has any button event handlers defined for it." how to attach an event to an mc called "child_next" within "parent1".
Code: import com.senocular.events.* function handleEventMethod(eventObject:ButtonEvent):Void { // trace event if (eventObject.type != "onMouseWithin") trace(eventObject.type +"("+this+")");
I'm wanting to bubble events between a few custom classes, however, they are not Display Objects.Is there any quick and easy way to do event bubbling, without needing a display list?Or perhaps another way than needing to manually listen for each event that is attached and "relay" it every time it is dispatched?
I am having trouble with event bubbling when using the flash video player I've tried several methods to stop the player,before submitting here - but nothing I've tried seems to work The scenraio is: The site loads great - the buttons function correctly When the fourth button is click - it loads a frame with an embeded FLV player (the default vid player Flash uses when importing video into the swf) When the fourth button is click (Cheetah Coloring System)The video starts to play When any other button is clicked The video continues to play The embeded vid clip is named movie1 and i've tried using move1.stop(); but that stops the entire swf how to stop the movie - when another button is clicked?
I have a utility class that I use to load images that never gets added to the stage and is extending EventDispatcher, it simply loads the data and spits it back out on request.
I want to add a custom event to track loading progress from outside the class. The events are firing but not (i think) bubbling because they aren't in the display list.
Is there a good way around this? I was thinking: Can I have a non display list object tell a display object to send the custom event for it?
I want to dispatch a MouseEvent.CLICK to a DisplayObject manually and make it bubble through all of it's children. The event is handled in the object that I dispatch it to, but does not seem to bubble (even though I specify that it should). Is it not possible to do this?
looks like flash has few issues when using transparent mode on different browsers players. Adding and removing eventlisteners on buttons are acting different. In some players everything works OK. FF and Chrome, but in IE, one of my buttons triggers the function even after removing its listener. Is this known issue, and is there any global set I can use to prevent this?
I have a MouseEvent.MOUSE_WHEEL eventlistener setup for a custom scrollbar component that allows the wheel to control the scrolling up or down.Inside the Flash dev environment when I test the flash app it works fine. However, when I test the app inside a web browser ( which has its own vertical scrollbar ) the mouse wheel controls both the scrollbar in my flash app and the scrollbar in the browser.Is there a way to setup the eventlistener on my scrollbar that it prevents the MOUSE_WHEEL event from bubbling up to the browser?
I inherited a flash website about a year ago.. not sure what version it was originally done in. I've made changes on the model last year using CS3 Flash Action script 2, but don't remember the flash version when published. The audio in question is the music that plays in the background when you get on the website:
[URL]
When I changed the image of the model this last week using CS4, I published it as Flash8 actionscript 2... now, the music plays on Mac Safari and Mac Firefox, but not on the Windows versions of IE or Firefox..
this is the code called sound control
onClipEvent(load) { _root.soundstatus="on"; _root.mySound = new Sound(_level0);
[Code]....
then there's the stop() that's used when the music is toggled off..
I've tried updating the flash player in Windows to the latest release, and I even tried republishing as flash 10, just not sure where to troubleshoot this..
What languages/techniques are used for letting the web browser interact with the desktop, e.g. dragging files to the web browser, dragging files from web browser to desktop, and maybe more features that I'm not aware of.
I want to call a function inside a Flash movie from javascript, using the ExternalInterface class. The problem is that to get it to work with Firefox I need to use the embed element and with the rest I have to get the object element. To solve it, I gave different ids to that two elements and depending on the user agent I select one or the other:
function getMovie(movieName) { alert(navigator.userAgent); if (navigator.userAgent.indexOf("Firefox") != -1) {
[Code].....
This works, but it is not very elegant and it may not work with other browsers..
Aside from using browser headers, I want to blacklist/whitelist browser and plugins from my site so that I can prevent these older unpatched systems from (1) being a general user of my site (2) removing those 'targets' from would-be-attackers reach.Is there a standard way to use Whitelisting or Blacklisting to control browser access to my site? For example, I want to prevent any browser that has outdated Flash, but I want to permit them if they have no Flash at all.