0

次のコードを使用して、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')";
         }
4

1 に答える 1

1

何もしないようにと言っているすべてのコメントの後、あなたのための1つの可能な実際の答え:

残りのIE6ユーザーのほとんどは、何らかの理由でアップグレードできない企業にいます。

はアップグレードできない可能性がありますが、それらのほとんどはIE6が提示する主要なセキュリティ問題を十分に認識しており、リスクを可能な限り軽減しようとします。

IE6のリスクを軽減するために実行できる重要なことの1つは、少なくとも外部インターネット上のサイトでは、ブラウザーがActiveXを実行できないようにすることです(内部イントラネットサイトのactiveXプラグインは、アップグレードできない理由の1つです)。

filterこのスタイルはActiveXを使用して魔法をかけていることに気付くでしょう。

したがって、ActiveXが無効になっている場合は、filterスタイルが機能しないことを意味します。これはあなたのpngfixを壊します。(また、ほとんどのAjaxコードを含む他の多くのものを壊すので、これらのユーザーは一般的にかなり壊れたインターネット体験をするでしょう)。

ActiveXがオフになっているIE6ユーザーの場合、PNGバグに対する他の回避策はないことを繰り返す価値があります。この位置にユーザーがいる場合、それを回避する唯一の方法は、2001年に戻って、代わりにGIFを使用することです。

他のpng修正スクリプトのいくつかを試すことができます-それらはいくつかあり、いくつかは他よりもうまく機能したことを私は知っています-しかし、一日の終わりに私は元のコメントに戻り、そのままにしておくことをお勧めしますIE6ユーザーのグラフィックレンダリングが壊れています。彼らのインターネット体験はとにかく十分に壊れているので、サイトがまったく使用可能であればそれはボーナスです。いくつかのレンダリンググリッチはそれらを延期しません。

于 2013-01-31T12:40:53.957 に答える