6

网页中 Java Applet 的一个众所周知的问题是,浏览器会忽略 applet 标签相对于页面中其他组件的 z-index。无论您如何在页面中定位和 z-index 元素,小程序都会将自己绘制在所有内容之上。

有一种解决方法,称为 iframe shim,如下所述: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 ,请注意它已经开放了一年,但是其他错误报告可以追溯到很多年前。

这太令人沮丧了,难道 Sun 不明白这是一种将 Java 边缘化为在浏览器中做酷事的方式吗?我爱你 Java,但你没有帮助你的处境......

4

3 回答 3

5

这个问题有一个棘手的解决方案。没有必要将代码放在iframe. 我们可以iframe在小程序上方有一个虚拟层。然后可以轻松地将带有文本的绝对 div 放在其上方iframe

工作示例

<!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>
于 2011-02-14T15:02:28.567 回答
3

实际上问题根本与 z-index 无关。它是由 Netscape Plugin API (NPAPI) 的“窗口”绘图模型引起的。

您对此无能为力(垫片除外)。插件作者必须使用无窗口 API 重写它

于 2009-09-08T11:48:49.513 回答
2

一方面,Mac 上的 Java 实际上是由 Apple 而不是 Sun 构建的。至于小程序,当有东西出现在它上面时,我们隐藏小程序。不过,这可能不足以满足您的需求。

于 2009-04-21T01:13:24.680 回答