11548 sujets

JavaScript, DOM et API Web HTML5

bonjour,

j'ai une page dans laquelle j'ai des <div> hidden.
Quand je clique sur une image ça met le div à visible et ça le centre sur ma page. Avec Firefox tout marche impeccable !!
Le problème c'est avec IE. Ca fait pas ce que je veux. J'ai fait des alert() dans mon javascript et le problème vient des fonctions qui ne retournent pas la même valeur suivant le navigateur.

voici mon code qui est apellé lorsque je clique sur une image:

function afficher(largeur, hauteur, div){
	if (window.innerHeight) {
		l_ecran = window.innerWidth;
		h_ecran = window.innerHeight;
	} else {
		l_ecran = document.body.offsetWidth;
		h_ecran = document.body.offsetHeight;
	}
	
	if (window.pageYOffset) {
		scrollH = window.pageYOffset;
		scrollG = window.pageXOffset;
	  } else {
		scrollH = document.body.scrollTop;
		scrollG = document.body.scrollLeft;
	  }
	
	// positionnement du div en largeur
	var left;
	if (largeur < l_ecran){		
		left = (l_ecran - largeur) / 2;
	} else {
		left = 0;
	}
	
	// positionnement vertical du div
	var top;
	var haut = scrollH;
	if (hauteur < h_ecran){		
		top = haut + (h_ecran - hauteur) / 2;
	} else {
		top = scrollH;
	}

	document.getElementById("popup_fond").style.visibility = "visible";
	document.getElementById(div).style.left = left+ "px";
	document.getElementById(div).style.top  = top + "px";
	document.getElementById(div).style.visibility = "visible";
}


le problème vient des variables (donc avec IE):
"scrollH" -> retourne tout le temps 0 !! Smiley decu
"l_ecran" -> valeurs différents
"h_ecran" -> idem

si quelqu'un sait a une idée .....

merci !
Modifié par beavis6511 (10 Sep 2007 - 00:13)
Rapidement vu (donc je ne sais pas si cela répondra exactement à ta question) je crois que l'équivalent IE de window.pageYOffset est :

document.documentElement.scrollTop

et non document.body.scrollTop.

Id pour X et Left.
ça marche
et pour le reste j'ai trouvé mon bonheur avec cette fonction:
function getWindowHeight() {
    var windowHeight=0;
    if (typeof(window.innerHeight)=='number') {
        windowHeight=window.innerHeight;
    }
    else {
     if (document.documentElement&&
       document.documentElement.clientHeight) {
         windowHeight = document.documentElement.clientHeight;
    }
    else {
     if (document.body&&document.body.clientHeight) {
         windowHeight=document.body.clientHeight;
      }
     }
    }
    return windowHeight;
}


site: http://pompage.net/pompe/pieds/[/url]