【问题标题】:Java Applet z-index on Safari and beyondSafari 及其他平台上的 Java Applet z-index
【发布时间】:2013-11-15 13:25:10
【问题描述】:

网页中 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,但你无助于你的处境......

【问题讨论】:

    标签: java html applet overlay z-index


    【解决方案1】:

    这个问题有一个棘手的解决方案。不必将代码放在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>
    

    【讨论】:

      【解决方案2】:

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

      您对此无能为力(除了垫片)。插件作者必须rewrite it using windowless API

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-02
          • 1970-01-01
          • 2013-04-06
          • 2018-10-17
          • 2011-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多