IE 6 - PNG修复 - 空白图像

时间:2013-01-31 12:11:25

标签: javascript jquery internet-explorer-6 iepngfix

我使用以下代码来修复IE6的PNG问题(是的,我们确实有一些访问者使用IE6 :()...代码似乎用空白图像替换.png图像但是似乎没有正确运行过滤器...任何想法为什么会失败?谢谢

        var blank = new Image();
         blank.src = 'img/blank.gif';
         $(document).ready(function() {
           var badBrowser = (/MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32");
           if (badBrowser) {
               //alert('bad browser');
             // get all pngs on page
             $('img[src$=".png"]').each(function() {
               if (!this.complete) {
                 this.onload = function() { fixPng(this) };
               } else {
                 fixPng(this);
               }
             });
           }
         });

         function fixPng(png) {
           // get src
           var src = png.src;
           // set width and height
           if (!png.style.width) { png.style.width = $(png).width(); }
           if (!png.style.height) { png.style.height = $(png).height(); }
           // replace by blank image
           png.onload = function() { };
           png.src = blank.src;
           // set filter (display original image)
           png.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
         }

1 个答案:

答案 0 :(得分:1)

在所有评论说不打扰做任何事情之后,一个可能的实际答案:

大多数剩余的IE6用户都是因为某种原因无法升级的公司。

可能无法升级,但大多数人都非常了解IE6提出的主要安全问题,并尽可能地尝试降低风险。

为缓解IE6风险,可以采取的一个关键措施是禁止浏览器运行ActiveX,至少对于外部互联网上的站点而言(内部Intranet站点上的activeX插件通常是其中的原因之一)#39 ; t升级)。

您会注意到filter样式使用ActiveX来发挥其魔力。

因此,如果禁用ActiveX,则意味着filter样式不起作用。这将打破你的pngfix。 (它还打破了很多其他的东西,包括大多数Ajax代码,所以这些用户通常会有非常破碎的互联网体验。)

值得重新考虑的是,对于已关闭ActiveX的IE6用户,没有其他解决方案可以解决PNG错误。如果你有这个位置的用户,那么唯一的办法是回到2001年并使用GIF代替。

你可以尝试一些其他的png修复脚本 - 有很多它们,我知道有些比其他的更好 - 但是在一天结束时我会回到原来的评论并建议只为IE6用户留下图形渲染。无论如何,他们的互联网体验将被打破,如果一个网站可以使用,它就是奖金;一些渲染故障不会让它们脱落。