PNG alpha transparency on Windows IE 5.5 and 6

it2022-05-05  70

前几天作项目的时候, 发现透明的Png文件在IE 6下显示的很糟糕,如是,通过google, 发现这个方法是目前最好使用的方法.

判断当前浏览器

     如果浏览器不是IE 6, 则处理无效.

Code  1var itsAllGood; 2if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) { 3    var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/''); 4    itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5 && Number(rslt[1]) < 7); 5    if(itsAllGood) 6    { 7        document.writeln('<style type="text/css">img, input.image { visibility:hidden; } </style>'); 8        window.attachEvent("onload", fnLoadPngs); 9    }10}

 

     2   全局处理函数

     

Code  1function fnLoadPngs()  2{ 3    for (var i = document.images.length - 1, img = null; (img = document.images[i]); i-- 4    { 5        if (img.src.match(/\.png$/i) != null 6        { 7            fnFixPng(img); 8            img.attachEvent("onpropertychange", fnPropertyChanged); 9        }10        img.style.visibility = "visible";11    }1213    var nl = document.getElementsByTagName("INPUT");14    for (var i = nl.length - 1, e = null; (e = nl[i]); i--15    {16        if (e.type && e.type.match(/\bimage\b/i) != null17        {18            if (e.src.match(/\.png$/i) != null19            {20                fnFixPng(e);21                e.attachEvent("onpropertychange", fnPropertyChanged);22            }23            e.style.visibility = "visible";24        }25    }26}2728function fnPropertyChanged() 29{30    if (window.event.propertyName == "src"31    {32        var el = window.event.srcElement;33        if (!el.src.match(/x\.gif$/i)) 34        {35            el.filters.item(0).src = el.src;36            el.src = "../images/pngfix.gif";37        }38    }39}

 

     3   单个文件处理

     

Code function fnFixPng(img) {    var src = img.src;    if(img.width != 0)    {        img.style.width = img.width + "px";        img.style.height = img.height + "px";    }    img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')"    img.src = "../images/pngfix.gif";}function fixPNG(img, register) {    if (itsAllGood && img.src.match(/\.png$/i) != null)     {        var src = img.src;        if(src.indexOf("empty"== -1)        {            fnFixPng(img);            if(register == "true")                img.attachEvent("onpropertychange", fnPropertyChanged);        }        img.src = "../images/pngfix.gif";        img.border = 0;    }    img.style.visibility = "visible";}

转载于:https://www.cnblogs.com/joechen/archive/2008/07/22/1248550.html


最新回复(0)