错误的IE测试扼杀了IE9



Pixastic的"blend"滤镜似乎在IE9的演示网站上工作得很好,但实际的可下载代码却没有。我相信这是由于pixastic.core.js文件中的"isIE"检测代码在第426行:

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

无论何时调用Pixastic.Client.isIE(),它都会通过该测试拾取IE9。如果我注释掉第204行

开头的代码块
if (imageIsCanvas && Pixastic.Client.isIE()) {

混合效果在IE9中效果很好。

是否有一个片段,我可以取代"ieIE"函数上面显示保持旧版本的IE远离效果,同时允许IE9?或者,如果我的检测错误,它在哪里,我如何修改它以适应?多谢。

我在这个答案中找到了检测ie9的解决方案:Internet Explorer 9对象检测

使用以下代码片段更改"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;
    }
}

相关内容

  • 没有找到相关文章

最新更新