Cariboo
mardi 7 novembre 2006 à 08:19
Voila la méthode implémentée par ARNO de l'équipe de développement de SPIP que j'ai testé avec succès.
En effet les filtres "image" de spip génèrent des png avec une transparence alpha, ils font donc changer le "comportement" d'IE pour qu'il gère correctement la transparence alpha.
La méthode utilisée est la même que le PNG behavior proposé par Dudu, sauf que c'est expliqué en français.
Afficher-du-PNG-24-dans-MSIEVoila le code du fichier htc utilisé :
CODE
<public:component>
<public:attach event="onpropertychange" onevent="propertyChanged()" />
<script>
var supported = /MSIE (5\.5)|[6789]/.test(navigator.userAgent) && navigator.platform == "Win32";
var realSrc;
var blankSrc = "rien.gif";
if (supported) fixImage();
function propertyChanged() {
if (!supported) return;
var pName = event.propertyName;
if (pName != "src") return;
// if not set to blank
if ( ! new RegExp(blankSrc).test(src))
fixImage();
};
function fixImage() {
// get src
var src = element.src;
// check for real change
if (src == realSrc) {
element.src = blankSrc;
return;
}
if ( ! new RegExp(blankSrc).test(src)) {
// backup old src
realSrc = src;
}
// test for png
if ( /\.png$/.test( realSrc.toLowerCase() ) ) {
// set blank image
element.src = blankSrc;
// set filter
element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
src + "',sizingMethod='image')";
}
}
</script>
</public:component>
Cela fonctionne parfaitement avec les différentes versions d'IE que j'ai testées (5.5, 6 et 7).