≒ 続)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タグで書き直ししました。わかったこと。
- objectタグをChromeとFFは認識せず。書き方の問題かもしれないけど、この書き方(ページソース見てね)でIEは普通に動作。
- commentタグで括ってembedタグを(従来通りの内容で)記述。ChromeとFFも従来通り、普通に動作するようになる。
- jreが死んでるサファリではちゃんとobjectタグの代替ドキュメント(だけ)が描画される。期待通り。
問題はobjectタグの書き方が良く分からないこと。ググってもそれぞれ書いてる内容が(時期に依るのかも)違う。objectタグをChrome、FFが認識しないなんてあり得ないので、認識できるように書ければembedタグの入れ子なんて要らない。
あるいは、noembedタグの復活を期待。もともとIE、Chrome、FFすべてembedタグは認識して、ちゃんと動作するのだから、代替ドキュメントをembedタグで適用できれば何の問題もないのだから。
やっぱりoracleが悪いんじゃないかと思うのです。未だにググって出てくる純正ドキュメントに「appletタグの利用」なんてあるからね。「objectタグ(or embedタグ)による埋め込み」ってキーワードで出てくるのはFLASHについての記事ばかりw
objectタグ埋め込みは今後も勉強しよう。
追記)
スマートフォン…
12年7月3日(火)‡01時09分50秒 ‡ 未分類