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をイベントが設定されている位置に浮かせる。
これも相当な力技な上に、複数の場所でイベントが設定されてる場合は大変なことになる。

■参考記事

IE7でswfobjectがうまく動作しない

■現象
IE7でswfobjectを利用してFlashコンテンツをDOMに追加しようとするとエラーが出る。

■原因
FlashPlayerがバージョンアップの際に、古いバージョンのFlashPlayerを削除せずにインストールしているため、JavaScriptでFlashのバージョン判定する際に判別できずにエラーになってしまう。

■対策
現在のところ、そのような現象に当たったことがないので、対応は何もしてない。
もしやるとすればどうすっかなー。
よくわからん。
yktkさんも今のところ対策はしてないとのこと。
今までそういった報告ないから、結構レアなケースなのかな。
同時に大量にそういった報告がない限り対応する気がしない・・・。
しばらくは個別に対応してもらうっきゃないかなー。

■参考記事