【问题标题】:IE 6 - PNG fix - blank imagesIE 6 - PNG 修复 - 空白图像
【发布时间】:2013-01-31 20:40:53
【问题描述】:

我正在使用以下代码来修复 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')";
         }

【问题讨论】:

  • 教育那些 IE6 用户。强制升级它们。降低开发成本。让网络变得更美好。
  • 如果我没记错的话,IE6 可以正常显示 PNG,除非没有透明度。如果那些 IE6 用户看到你的网站没有透明的图形,那会是多大的灾难?网站还能用吗?如果是这样,我的建议是保持这种状态。任何仍在使用 IE6 的人现在都会非常习惯于看到有重大问题的网站;他们不会因缺少透明度而感到冒犯。如果您的网站仍然可供他们使用,那么尽管出现任何渲染问题,他们都会使用它。因此,即使您仍然有 IE6 用户,也要让他们拥有损坏的图形。他们不会在意的。
  • 在我看来,我们不应该仍然支持 IE6。 0.9% 的英国人使用 IE6,0.4% 的美国人仍在使用它。甚至微软也想杀了它-source。我推荐:Educate users that their browser is out of date.
  • 顺便说一句,有很多不同的 iepngfix 脚本在运行;如果这个不适合您,最快的解决方案可能就是尝试另一个。
  • 是的,我们已经通知这些用户我们不支持这个浏览器......无论如何,仍然有任何想法为什么该代码不起作用?

标签: javascript jquery internet-explorer-6 iepngfix


【解决方案1】:

一个可能的实际答案,毕竟 cmets 说不要打扰做任何事情:

大多数剩余的 IE6 用户都在企业中,由于某种原因无法升级。

可能无法升级,但他们中的大多数人都清楚 IE6 带来的主要安全问题,并尽可能降低风险。

降低 IE6 风险的一个关键措施是禁用浏览器运行 ActiveX,至少对于外部 Internet 上的站点(其内部 Intranet 站点上的 ActiveX 插件通常是它们不能运行的原因之一)升级)。

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

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

值得重申的是,对于关闭 ActiveX 的 IE6 用户,没有其他解决 PNG 错误的方法。如果您的用户处于这个位置,那么唯一的解决方法就是回到 2001 年并改用 GIF。

您可以尝试其他一些 png 修复脚本 - 有很多,我知道有些比其他的效果更好 - 但在一天结束时,我会回到我原来的评论和建议让 IE6 用户的图形渲染中断。无论如何,他们的互联网体验将被打破,如果一个网站完全可用,那将是一个奖励;一些渲染故障不会让他们失望。

【讨论】:

    猜你喜欢
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2023-03-29
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    相关资源
    最近更新 更多