Z-индекс Java-апплета в Safari и за его пределами - PullRequest
6 голосов
/ 12 марта 2009

Хорошо известная проблема с апплетами Java на веб-страницах заключается в том, что браузеры игнорируют z-индекс тега апплета по сравнению с другими компонентами на странице. Независимо от того, как вы расположите и z-index элементы на странице, апплеты будут рисовать поверх всего.

Существует обходной путь, известный как прокладка iframe, как описано здесь: http://www.oratransplant.nl/2007/10/26/using-iframe-shim-to-partly-cover-a-java-applet/.

Однако этот обходной путь не работает в Safari 3 или 4 в Windows (предполагается, что то же самое для Mac).

Кто-нибудь знает, как заставить его работать в Safari?

У кого-нибудь есть идеи о том, как оказать давление на Sun, чтобы решить основную проблему, чтобы мы могли избежать неуклюжих прокладок? Вот сообщение об ошибке по этой проблеме, http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6646289, обратите внимание, что она была открыта в течение года, однако другие сообщения об ошибках возвращаются много лет назад.

Это так расстраивает, разве Sun не понимает, что это та самая вещь, которая изолировала Java как способ делать классные вещи в браузере? Я люблю тебя, Ява, но ты не помогаешь своей ситуации ...

Ответы [ 3 ]

5 голосов
/ 14 февраля 2011

Есть хитрое решение проблемы. Нет необходимости иметь код внутри 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>
3 голосов
/ 08 сентября 2009

На самом деле проблема вообще не связана с z-index. Это вызвано «оконной» моделью рисования Netscape Plugin API (NPAPI).

Вы ничего не можете с этим поделать (кроме прокладки). Автор плагина должен переписать его, используя API без окон .

2 голосов
/ 21 апреля 2009

Во-первых, Java на Mac фактически создается Apple, а не Sun. Что касается апплетов, мы скрываем апплеты, когда на них что-то появляется. Хотя этого может быть недостаточно для ваших нужд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...