<!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=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<title>Problem demo</title>
</head>
<body>
<div style="background:red; position:relative;" id='div1'>1.
<div style="background:lime; position: absolute; width: 300px;height: 300px; top: 3px; left: 30px" id="div3">3.</div>
</div>
<div style="background:blue;position:relative;color: white" id="div2">2.</div>
<script type="text/javascript">/*<![CDATA[*/
window.onload= function()
{
// The container of the absolute DIV
document.getElementById('div1').style.zIndex = 800;
// The lowest DIV of all which obscures the absolute DIV
document.getElementById('div2').style.zIndex = 1;
// The absolute DIV
document.getElementById('div3').style.zIndex = 1000;
}
/*]]>*/</script>
</body>
</html>
ce script a deux DIV
éléments avec position:relative
et le premier d'entre eux a en un mot, un troisième DIV
avec position:absolute
en elle. Tout est configuré pour fonctionner en mode standard IE-7 (je cible IE7 et plus).Pourquoi zIndex ne fonctionne pas à partir de IE/Javascript?
Je connais les piles z séparées de IE, donc par défaut le troisième DIV
devrait être sous le second DIV
. Pour résoudre ce problème, il y a un peu de Javascript qui définit les ordres z des premier et troisième DIV
à 1000, et l'ordre z de la seconde DIV
à 999.
Malheureusement, cela n'a pas aidé. Si les index z étaient définis dans le balisage, cela fonctionnerait, mais pourquoi pas de JS?
Remarque: Ce problème n'existe pas en mode standard IE8, mais je cible IE7, donc je ne peux pas me fier à cela. Aussi, si vous sauvegardez cela sur votre disque dur et que vous l'ouvrez ensuite, au début IE se plaint de quelque chose à propos d'ActiveX et d'autres choses. Après l'avoir fait disparaître, tout fonctionne comme prévu. Mais si vous actualisez la page, le problème est de nouveau là.
Ajouté: En fait, vous pouvez réduire encore plus loin juste
window.onload= function()
{
document.getElementById('div1').style.zIndex = 800;
}
Et le problème est toujours là.
Cette plainte "ActiveX et d'autres choses" (barre d'informations) signifie que votre code JavaScript n'a pas fonctionné non plus. Par conséquent, si vous l'attendiez, c'est votre problème là. – EricLaw
@EricLaw - Je ne suis pas * stupide *. Laissez-moi reformuler. Lorsque IE vous invite 'Pour vous aider à protéger votre sécurité, Internet Explorer a interdit à cette page Web d'exécuter des scripts ou des contrôles ActiveX pouvant accéder à votre ordinateur. Cliquez ici pour les options ... ', vous devez cliquer dessus et sélectionner' Autoriser le contenu bloqué ... '. Après cela, vous devez actualiser la page (vous ne serez plus invité) et le bug sera observable. –