Safariおよびそれ以降のJavaアプレットz-index
質問
WebページでのJavaアプレットのよく知られた問題は、ブラウザがページ内のアプレットタグと他のコンポーネントのz-indexを無視することです。ページ内で要素をどのように配置してZ-index要素を配置しても、アプレットはすべての上に描画されます。
ここで説明するように、iframeシムとして知られる回避策があります。 http://www.oratransplant.nl/2007/10/26/using-iframe-shim-to-partly-cover-a-java-applet/ 。
ただし、この回避策はWindowsのSafari 3または4では機能しません(Macでも同じと仮定)。
Safariで動作させる方法を知っている人はいますか?
不器用なシムを避けるために、根本的な問題を修正するようSunに圧力をかける方法についてのアイデアはありますか?問題に関するバグレポートは、 http://bugs.sun.com /bugdatabase/view_bug.do?bug_id=6646289 、1年間開いていることに注意してください。ただし、他のバグレポートは何年も前に遡ります。
これは非常にイライラします。Sunは、これがJavaをブラウザでクールなものにする方法として疎外しているようなものだと理解していませんか?私はあなたのJavaが大好きですが、あなたはあなたの状況を助けていません...
解決
実際には、問題はz-indexとはまったく関係ありません。 「ウィンドウ」が原因です。 Netscape Plugin API(NPAPI)の描画モデル。
それについては何もできません(シムを除く)。プラグインの作成者は、ウィンドウレスAPIを使用して書き換える必要があります。
他のヒント
この問題には、巧妙な解決策があります。 iframe
内にコードを置く必要はありません。アプレットの上のレイヤーとしてダミーの iframe
を作成できます。そして、その iframe
の上にテキストを含む絶対divを簡単に配置できます。
作業例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Applet z index issue</title>
<style>
.applet {width:400px; margin:0 auto; text-align:center; border:1px solid #000; left:40%; position:absolute }
.iframe {width:400px; background:#fff; position:absolute; border:1px solid #f00; position:absolute; left:45%; top:20px; z-index:9; height:201px;}
.message { width:250px; border:1px solid #000; background:#fff; height:150px; color:#fff; text-align:center; z-index:99; background:#555; float:left; position:absolute; left:45%; top:20px}
</style>
</head>
<body>
<div class="message">Message</div>
<div class="iframe"><iframe style="width:500px; height:205px; background:none; border:none"> </iframe></div>
<div class="applet">
<applet code="Bubbles.class" width="400" height="350">
Java applet that draws animated bubbles.
</applet>
</div>
</body>
</html>
たとえば、Mac上のJavaは実際にはSunではなくAppleによって構築されています。アプレットについては、その上に何かが表示されている場合、アプレットを非表示にします。ただし、ニーズには十分ではない場合があります。