2009-03-12 20 views
6

Un problème bien connu avec Java Applets dans les pages Web est que les navigateurs ignorent l'index z de la balise applet par rapport aux autres composants de la page. Peu importe comment vous positionnez et z-indexez les éléments dans la page, les applets se dessinent au-dessus de tout.Java Applet z-index sur Safari et au-delà

Il existe une solution de contournement, appelée iframe shim, telle que décrite ici: http://www.oratransplant.nl/2007/10/26/using-iframe-shim-to-partly-cover-a-java-applet/.

Toutefois, cette solution de contournement ne fonctionne pas dans Safari 3 ou 4 dans Windows (en supposant la même chose pour Mac).

Quelqu'un sait-il un moyen de le faire fonctionner dans Safari? Est-ce que quelqu'un a des idées sur la façon de faire pression sur Sun pour résoudre le problème sous-jacent afin d'éviter les cales maladroites? Voici un rapport de bug sur le problème, http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6646289, notez qu'il a été ouvert pendant un an, cependant d'autres rapports de bogues remontent à de nombreuses années.

C'est tellement frustrant, Sun ne comprend pas que c'est le genre de chose qui a marginalisé Java pour faire du cool dans le navigateur? Je t'aime Java, mais tu n'as pas aidé ta situation ...

Répondre

3

En fait, le problème n'est pas du tout lié à l'index z. Il est provoqué par le modèle de dessin "fenêtré" de Netscape Plugin API (NPAPI).

Vous ne pouvez rien y faire (sauf la cale). L'auteur du plugin doit rewrite it using windowless API.

2

Pour un, Java sur Mac est en fait construit par Apple et non par Sun. En ce qui concerne les applets, nous cachons les applets quand il y a quelque chose qui apparaît dessus. Cela pourrait ne pas suffire à vos besoins.

5

Il existe une solution délicate au problème. Il n'est pas nécessaire d'avoir le code à l'intérieur d'un iframe. Nous pouvons avoir un mannequin iframe juste comme un calque au-dessus de l'applet. Et puis un div absolu avec le texte peut facilement placé au-dessus de iframe.

exemple de travail

<!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>