11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour tout le monde,
je sais que ce sujet a déjà été réglé dans ce topic-ci:
Transparence PNG 24 sous IE grâce à javascript.

Souhaitant m'améliorer en JavaScript, j'ai voulu programmer mon propre script pour fixer les PNG sous IE. Malheureusement, il ne marche pas. Si vous pouviez m'aider un tout petit peu, ça serait extrêmement gentil.

le code:

  //declaration des variables:
  var image = new Array();//variable qui contiendra les objets images 

  function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }

 function findPosY(obj)
  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }
  
  function replacePNG()
  {
		
	//recuperation des objets images
	var input = document.getElementsByTagName("img");
	var j = 0;
	for ( var i=0;i<input.length; i++)
	{	
		//recuperation de l'extension
		source = input[i].src;
		var extension = source.substr(source.length-3,3);
		if(extension == "png")
		{
			image[j]=input[i];
			j++;
		}
	}
	//application du fitre alpha de IE sur les images png
	for(var i=0; i<image.length;i++){
		applyFilter(image[i]);
		//masquage de l'image actuel
		image[i].style.visibility = "hidden";
	}
  }
  
  function applyFilter(image)
  {
	//recuperation du chemin de l'image
	var chemin = image.getAttribute("src");
	//recuperation de la largeur et de la hauteur de l'image
	var hauteur = image.clientHeight;
	var largeur = image.clientWidth;
	//recuperation de la position de l'image
	var x = findPosX(image);
	var y = findPosY(image);
	//remplassement par une version supportant la transparence
	var new_image = document.createElement("img");
	new_image.src = "images/blank.gif";
	//new_image.setAttribute("style","position:absolute;top: "+y+"px ;left: "+x+"px ; width: "+largeur+"px ;height: "+hauteur+"px ; background-image:none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+chemin+"' sizingMethod='scale');");
	new_image.style.position = "absolute";
	new_image.style.top = y+"px";
	new_image.style.left = x+"px";
	new_image.style.width = largeur+"px";
	new_image.style.height = hauteur+"px";
	new_image.style.background-image = "none";
	new_image.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src  = parseString(chemin) ;
	
	//insertion de la nouvelle image dasn la page
	var emplacement = document.getElementsByTagName("body")[0];
	emplacement.appendChild(new_image);
  }
  
  window.onload = function()
  {
	var arVersion = navigator.appVersion.split("MSIE");
	var version = parseFloat(arVersion[1]);
	if (version >= 5.5)
	{
		replacePNG();
	}
  }	


Le problème viendrait de la déclaration du filtre DXImageTransform.Microsoft.AlphaImageLoader. J'ai essayé plusieurs méthodes différentes mais aucune n'a fonctionné.

Pour information, je ne connais pas l'erreur, c'est le deboggeur de Microsoft qui me dit juste qu'il y a une erreur.

Si je ne suis pas assez explicite, demandez moi les informations.

Merci de votre aide.[/i][/i][/i][/i]
Modifié par humaneko (15 May 2007 - 12:11)