2
Jun/09
2

Flash Bleeding Through

If you use mint.com you’ll notice that whenever a modal dialog is displayed they hide the flash content. This is because the flash normally bleeds through any HTML. Even if the flash has a z-index of -1000 and a div has a z-index of 1000, the flash will still appear on top of the div. There is an easy workaround for this with the WMODE parameter:

<object type="application/x-shockwave-flash" ...>
    ...
    <param name="wmode" value="opaque" />
    <embed ... wmode="opaque"></embed>
</object>

“The WMODE parameter can be ‘window’ (default), ‘opaque’, or ‘transparent’. Using a WMODE value of ‘opaque’ or ‘transparent’ will prevent a Flash movie from playing in the topmost layer and allow you to adjust the layering of the movie within other layers of the HTML document.” – Adobe Technote

In my testing this works great in Firefox 3 and IE 7.

Since we use FusionCharts at $work I had to figure out how to make the fusioncharts javascript set WMODE. This is very easy by calling a method on the chart object. Make sure you do this before you render the graph.

// sets WMODE to "opaque".
chart.setTransparent();

// sets WMODE to "transparent".
chart.setTransparent(1);

A thread on the fusion charts forums goes in to more detail about this.

Edit: Turns out that if you set a fusionchart to use wmode transparent or opaque, all of the mouseover events don’t work, such as displaying the exact value of a point in the chart when the mouse goes over it. Boo!