2

Pixastic の "blend" フィルタは、IE9 のデモ サイトでは正常に動作しているように見えますが、実際のダウンロード可能なコードでは動作しません。これは、pixastic.core.js ファイルの 426 行目の「isIE」検出コードによるものだと思います。

isIE : function() {
  return !!document.all && !!window.attachEvent && !window.opera;
}

Pixastic.Client.isIE() が呼び出されるたびに、そのテストで IE9 が選択されます。204行目で始まるブロックをコメントアウトすると

if (imageIsCanvas && Pixastic.Client.isIE()) {

Blend エフェクトは IE9 で正常に動作します。

上記の「ieIE」関数を置き換えて、IE9を許可しながら古いバージョンのIEを効果から遠ざけることができるスニペットはありますか? または、検出が間違っている場合、それはどこにあり、どのように修正できますか? どうもありがとう。

4

1 に答える 1

4

この回答で ie9 を検出するソリューションのヘルプを見つけました: Internet Explorer 9 Object Detection

次の抜粋されたコードで「isIE」機能を変更すると、うまくいきました。あまり明確な解決策ではありませんが、問題は解決します:

isIE : function() {
    var ie = (function(){
        var undef,
        v = 3,
        div = document.createElement('div'),
        all = div.getElementsByTagName('i');

        while (
                div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
                all[0]
        );

        return v > 4 ? v : undef;

    }());

    if (ie >= 9) {
        return false;
    } else {
        return !!document.all && !!window.attachEvent && !window.opera;
    }
}
于 2012-10-22T09:24:48.047 に答える