Hi!
Mir is vor kurzem aufgefallen, dass das "gesperrt" symbol für foren bei IE6 falsch angezeigt wird, das liegt daran, dass dieser keine Transparenz bei PNGs unterstützt.
Ich hab mich vor einiger Zeit damit beschäftigt einen Ausweg zu finden, und aus einem Tutorial hab ich dann einenen guten Ansatz bekommen.
Ich hab das ganze noch etwas verbessert, und dass is rausgekommen:
function correctPNG()
{
var arVersion = navigator.appVersion.split("MSIE");
var version = parseFloat(arVersion[1]);
if ((version >= 5.5) && (document.body.filters))
{
for(var i=0; i<document.images.length; i++)
{
var img = document.images[i];
var imgName = img.src.toUpperCase();
if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
{
var imgID = (img.id) ? "id='" + img.id + "' " : "";
var imgClass = (img.className) ? "class='" + img.className + "' " : "";
var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
var imgStyle = "display:inline-block;" + img.style.cssText;
var imgMouseover = (img.onmouseover)? "onmouseover=\"" + getJavascriptCode(img.onmouseover) + "\" ":"";
var imgMouseout = (img.onmouseout)? "onmouseout=\"" + getJavascriptCode(img.onmouseout) + "\" ":"";
var imgMousedown = (img.onmousedown)? "onmousedown=\"" + getJavascriptCode(img.onmousedown) + "\" ":"";
var imgMouseup = (img.onmouseup)? "onmouseup=\"" + getJavascriptCode(img.onmouseup) + "\" ":"";
var imgClick = (img.onclick)? "onclick=\"" + getJavascriptCode(img.onclick) + "\" ":"";
if (img.align == "left") imgStyle = "float:left;" + imgStyle;
if (img.align == "right") imgStyle = "float:right;" + imgStyle;
if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle;
var strNewHTML = "<span " + imgID + imgClass + imgTitle + imgMouseover + imgMouseout + imgMousedown + imgMouseup + imgClick
+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+ "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>";
img.outerHTML = strNewHTML;
i = i-1;
}
}
}
}
function getJavascriptCode(code)
{
code = code.toString();
if(code.startsWith("function anonymous()"))
{
var p1 = code.indexOf("{") + 1;
var p2 = code.lastIndexOf("}");
return code.substring(p1, p2).replace(/\n/g, "");
}
else
{
return code;
}
}
String.prototype.startsWith = function(data)
{
return (this.substr(0, data.length) == data);
}
Wenn ihr nun beim onload die Funktion correctPNG() aufruft, sollten alle geladenen PNG richtig und mit voller Transparenz angezeigt werden.
MFG
BWA
PS: Die Links zum schreiben einer PN im "Das Team" Bereich funktionieren nicht mehr.