网页中Java小程序的一个众所周知的问题是浏览器忽略小程序标记相对于页面中其他组件的z索引。无论您在页面中如何定位和z-index元素,applet都会将它们自己绘制在所有元素之上。
这里描述了一种变通方法,称为iframe填充程序:http://www.oratransplant.nl/2007/10/26/using-iframe-shim-to-partly-cover-a-java-applet/。
但是,此解决方法在Windows中的Safari 3或Safari 4中不起作用(假设Mac也是如此)。
有谁知道在Safari中使用它的方法吗?
有没有人有办法迫使Sun解决根本问题,这样我们就可以避免笨拙的垫片?这是一个关于这个问题的错误报告,http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6646289,请注意,它已经开放了一年,然而其他错误报告可以追溯到很多很多年以前。
这太令人沮丧了,难道Sun不知道这正是将Java作为一种在浏览器中做很酷的事情的边缘事物吗?我爱你,爪哇,但你对你的处境毫无帮助。
发布于 2009-09-08 11:48:50
实际上,这个问题与z-index没有任何关系。这是由Netscape Plugin API (NPAPI)的“窗口”绘图模型引起的。
您对此无能为力(除了填充程序)。插件作者必须rewrite it using windowless API。
发布于 2011-02-14 23:02:29
这个问题有一个棘手的解决方案。没有必要将代码放在iframe
中。我们可以有一个虚拟的iframe
,就像applet上面的一层一样。然后,可以轻松地将包含文本的绝对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>
发布于 2009-04-21 01:13:25
首先,Mac上的Java实际上是由苹果而不是Sun开发的。至于applet,当上面出现一些东西时,我们会隐藏applet。不过,这可能不足以满足您的需求。
https://stackoverflow.com/questions/638886
复制相似问题