wmodeのもたらす不具合


Flashで背景を透過させるときにHTMLのSWFObject部分にwmode=”transparent”;と書くこともあると思いますが、これが結構不具合(仕様?)が多く、安易に使えません。

さっと確認した感じではwmodeをきちんと設定しないと、以下のような不具合が出たり出なかったりします。(FlashPlayerのバージョンによって変わるものもあります。)

  • ブラウザによってポップアップブロックに引っかかったり引っかからなかったりする
  • 文字入力がブラウザによってインライン入力できたりできなかったりする
  • ブラウザによって日本語入力ができたりできなかったりする
  • CSSのz-indexがwmode=windowでは無視される(Flashが最前面に表示される)

などなど

このできたりできなかったりする、というのが曲者です。ブラウザによってFlashが違う動作をするときはまずwmodeを疑うと良い気がします。
Flashは全部のブラウザで動くんだぜーとかやってると返り討ちにあいます。wmodeの設定によってはちゃんと動くようになる場合がありますが、こいつがやっかいなのは、ブラウザごとに動作を分ける必要があって、

  • wmode=transparent
  • wmode=window
  • wmode=opaque
  • wmode=direct
  • wmode=gpu

のどれが適切かはFlashとブラウザとOSによって異なるので、ブラウザごとに適切なwmodeを選んでいく必要がある場合があるということです。

以前にWindows7のChromeで日本語入力ができない、というのに悩まされました。これは一時wmodeを設定しないか、windowに設定すれば動くものの、それ