2

アルファ透明度を適用する JavaScript コードがいくつかあります。その前に、ブラウザーがサポートしている透過性の種類を検出し、後で使用できるように変数に格納します。コードは次のようになります。

// figure out the browser support for opacity
if (typeof br.backImg.style.opacity != 'undefined') 
    opacityType = 'opacity';
else if (typeof br.backImg.filters == 'object') 
    opacityType = 'filter';
else 
    opacityType = 'none';

Firefox と Safari では最初の条件が true、IE7 では 2 番目の条件が true ですが、IE6 では最後の条件に該当します。IE6 にフィルター オブジェクトがないのはなぜですか? これを検出するより良い方法はありますか?

4

2 に答える 2

5

IE7 では filter sであり、IE6 では filter です。

以下のコードは次を返します。

  • style.opacity がサポートされている場合は「不透明度」
  • MS フィルターの場合は 'filter' (IE < 7)
  • MS フィルターの「filters」(IE7)
  • 他のすべての場合は「なし」

.

var opacityType=(
  (typeof o.style.opacity !== 'undefined') ? 'opacity' :
  /*@cc_on @if (@_jscript)
    (typeof o.filters === 'object') ? 'filters' :
    (typeof o.filter === 'string') ? 'filter' :
  @end @*/
  'none'
);

@cc_on 、@if、および@_jscriptは、IE のみがサポートする条件付きコメントで使用されます

FF3、IE6、IE7、Opera9、および Chrome 1 でこれをテストしましたが、IE4、5、または 8 ではテストしませんでした。

quirksmodeによると、MS は CSS をfilterから-ms-filterに変更したため、IE8 でどのような結果が得られるかはわかりません。

mozilla によると、不透明度は FF 0.9 以降、Opera 9 および Safari 1.2 以降、フィルタは IE4 以降でサポートされています。

私はブラウザ スニッフィングを行うのは好きではありませんが、必要な場合があり、条件付きコメントを使用すると、特定の IE の処理が非常に簡単になります。

于 2008-12-23T10:43:54.607 に答える
2

フィルターとして理解しているものは、不透明度と呼ばれます。Real フィルターは、そのブラウザーの他の多くのものの中で不透明度を有効にする独自の IE 拡張機能です。

クロスブラウザーの透過性テクニックについては、この記事をお試しください。

JS に相当するものは、説明したものとまったく同じです: style.opacity または style.filter。より可能性の高い問題は、doctype が遷移的である、および/または透明にしようとしているアイテムに魔法のhasLayoutがないことです。

于 2008-12-22T22:21:55.197 に答える