≒ 続)Java appletのweb埋め込みの件

前のエントリの続き。えらく長くなりそうなのでエントリ分けました。つまり、ものすごくハマってます。

「z-indexの不思議」

IEとChromeは柔軟です。アプレットのあるdivを0(=AUTO)にして、その他のdivを1以上に設定すると当然アプレットを背景にすることが出来ます。

FFはその設定だとアプレットdivが最前面に来て、すべてを見えなくしてしまいます。もともとposition:absoluteだし、wmode=”transparent”にしてもだめ。結局アプレットdivを-1にしてみたら、他が隠されなくなった、というかアプレットdivが親divの後ろに隠れちゃうw あたりまえー、なんだけど、IE、Chromeだとちゃんと(期待通り)表示される。これ柔軟すぎないか?w つまり、親divのz-index値は無視で、内包された子divのz-index値の大小で重ね合わせてるご様子。

しかし、ここで驚愕の現象が。アプレットdivでない、ただの文字を引っ張ってきてるiFrameのdivに-1を設定すると、IE、Chromeともに親divの後ろに消えるw 上の仮説がすぐ崩れたw

FF、IE、Chromeそれぞれ違うけど、アプレットの扱い方が他の要素と違うってことがわかりました。問題は解決せず。

追記)あきらめました。

FF除外ハックってあるんですね。2009年の記事だからいつまで保つかわかりませんが。「モズドキュメントハック

7/4追記)さらに後退

全部アプレットで書き直しました。アプレットとhtml要素の重なりに悩むのをやめました。

でもnoembedタグが使えないと言うことでまたjre拒否の場合の表示に悩んだんですが、結局noembedタグ使いました。jre走らないくらい古いブラウザならnoembedタグも活きてるんじゃないかと。

IEテスターで見た限り、IE7まではnoembedタグの内容が期待通り表示されてました。最新ブラウザで意図的に拒否してる場合はどうなるのだろうか。やっぱりobjectタグで書き直そうかな。

サファリ?知りません。

7/4追記)これで最後?

objectタグで書き直ししました。わかったこと。

  1. objectタグをChromeとFFは認識せず。書き方の問題かもしれないけど、この書き方(ページソース見てね)でIEは普通に動作。
  2. commentタグで括ってembedタグを(従来通りの内容で)記述。ChromeとFFも従来通り、普通に動作するようになる。
  3. jreが死んでるサファリではちゃんとobjectタグの代替ドキュメント(だけ)が描画される。期待通り。

問題はobjectタグの書き方が良く分からないこと。ググってもそれぞれ書いてる内容が(時期に依るのかも)違う。objectタグをChrome、FFが認識しないなんてあり得ないので、認識できるように書ければembedタグの入れ子なんて要らない。

あるいは、noembedタグの復活を期待。もともとIE、Chrome、FFすべてembedタグは認識して、ちゃんと動作するのだから、代替ドキュメントをembedタグで適用できれば何の問題もないのだから。

やっぱりoracleが悪いんじゃないかと思うのです。未だにググって出てくる純正ドキュメントに「appletタグの利用」なんてあるからね。「objectタグ(or embedタグ)による埋め込み」ってキーワードで出てくるのはFLASHについての記事ばかりw

objectタグ埋め込みは今後も勉強しよう。

追記)

スマートフォン…