page_adsence

2008年11月19日水曜日

FireFox3でoverflow:autoがあるとFlashの動作がおかしくなる

いつも通り全画面ジャックのブログパーツを作ってたらへんな現象に遭遇した。

■現象
クリックイベント自体は取れてるが、そのイベントに対してハンドルされているFlashの処理が実行されない。
通常、Flash上で右クリックするとFlash用のメニューがアイコンがある位置に出てくるが、
この場合画面左上のほうに出てくる。
また、アイコンがpointerのはずなのに、defaultになってしまう。

■原因
おそらくblog上にoverflow:autoがかかってるエリア上ではFlashコンテンツがうまく動作しないというブラウザのバグらしい・・・。

■対策
flashのwmodeをwindowにすると普通にいける。
以前IE6で透過するとクリックイベントがうまく取れないという現象があり、
それは透明に近いレイヤーを引くことで解決できた。
同様のことを今回のブログパーツでやってみたがダメだった。
JavaScriptで強制的にCSSを書き換えるにしても、
該当のCSSを検索するのに時間がかかるので現実的ではない。
正直お手上げ。
強行手段としてはいくつか案があるがどれも微妙な気がする。

■案1
CSSを追加することで強制的autoからhiddenにする
*{overflow:hidden !important}


これを全画面ジャック時に適用する。

■案2
wmode="window"のswfをイベントが設定されている位置に浮かせる。
これも相当な力技な上に、複数の場所でイベントが設定されてる場合は大変なことになる。

■参考記事