Det går även att fixa bakgrunder och liknande, men det går oftast bättre att göra i en IE-specifik stillmall, nackdelen är att man inte kan positionera ller upprepa bakgrunden.
Jag föreslår HTC-tekniken för IMG-elementen. En HTC-fil är en extern javascriptfil man kan sätta att köras för vissa typer av element i en CSS-fil (helst IE-specifik med conditional comments):
CSS:
img
{ behaviour: url('pngfix.htc'); }
pngfix.js:
<public:component>
<public:attach event="onpropertychange" onevent="change()" />
<script language="JScript">
var blank = 'blank.gif';
function change(){
if (window.ActiveXObject && event.propertyName == "src" && element.src.toLowerCase() != blank.toLowerCase()) fix();
}
var previous = "";
function fix(){
var url = element.src;
if (url.substr(url.length - 3).toLowerCase() != 'png'){
element.runtimeStyle.filter = "";
return;
}
if (url == previous) return;
var width = element.offsetWidth, height = element.offsetHeight;
element.src = blank;
element.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\"" + url + "\", sizingMethod='scale')";
element.width = width;
element.height = height;
previous = url;
};
if (window.ActiveXObject) fix();
</script>
</public:component>
Man kan skriva ett skript som inte använder den blanka GIF-bilden men det är den lättaste och enligt erfarenhet bästa lösningen.
PS. Koden är inte testad.