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:
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)
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)