即兴的。。使用jquery 1.9时-使用browser.msie时出错

即兴的。。使用jquery 1.9时-使用browser.msie时出错,jquery,impromptu,Jquery,Impromptu,在最新的jQuery1.9下运行时,我在ImpromptuVer4.1中遇到一个错误 未捕获的TypeError:无法读取未定义的属性“msie” 以前版本的jquery并非如此 即兴表演中的冒犯性台词是第20行: var ie6 = ($.browser.msie && $.browser.version < 7); var ie6=($.browser.msie&&$.browser.version

在最新的jQuery1.9下运行时,我在ImpromptuVer4.1中遇到一个错误

未捕获的TypeError:无法读取未定义的属性“msie”

以前版本的jquery并非如此

即兴表演中的冒犯性台词是第20行:

var ie6 = ($.browser.msie && $.browser.version < 7);
var ie6=($.browser.msie&&$.browser.version<7);
您可以临时修补此行:

var ie6 = ($.browser.msie && $.browser.version < 7);
。。。现在它可以与jQueryV1.9.0+一起使用了。或者,您可以回滚到jqueryv1.8.3

编辑(2013年3月12日)

谢谢@johntrepreneur的评论,你是对的两个音符

  • 此编辑行:

    var ie6 = ( navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/) );
    
    。。。应替换为以下内容:

    var ie6 = ( navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/) );
    
    var ie6 = ( navigator.userAgent.match(/msie [6]/i) );
    
    。。。糟糕的是,我急忙写补丁。这应该能奏效

  • Impromptu在其中完全取消了对IE6的支持(2013年3月25日,在此原始帖子之后)。OP带来的问题是,Impromptu确实与jQueryV1.9+发生了冲突将即兴js文件更新到也可以解决此问题


  • 我更喜欢这一个以范围为目标,只在
    if (/msie [1-8]./.test(navigator.userAgent.toLowerCase()))
    {
        //code here
    }
    

    自从Jquery不推荐使用$.browser函数以来 我发现的最简单的方法是用javascript创建一个全局

    var LTE_IE9 = false;
    
    以及使用中的条件HTML IE选择器

    <!--[if lte IE 9]>
    <script>LTE_IE9 = true;</script>
    <![endif]-->
    
    
    
    我使用它

      var browser = $.browser;
        if ( ! browser ) {
           var ua = navigator.userAgent.toLowerCase();
           var m = /(msie) ([\w.]+)/.exec( ua ) || ! /compatible/.test(ua) && /(mozilla)/.exec( ua ) || [];
           browser = { version: m[2] };
           browser[ m[1] ] = true;
        }
    

    添加
    jquerymigrate
    插件

    //cdnjs.cloudflare.com/ajax/libs/jquery-migrate/1.2.1/jquery-migrate.min.js


    $.browser.msie
    从jquery 1.9.X中删除

    正如这里所说,$.browser在jquery中不再存在,因为版本1.9


    因此,请检查

    ,因为$.browse在jQuery V.1.4之后已被弃用,并在jQuery V.1.9之后被删除

    您仍然可以通过以下代码行解决此问题(适用于所有浏览器)


    对我来说很好

    jQuery.browser
    :已弃用:1.3,已删除:1.9Aha。。。所以,对于每个人来说,即兴应用都会中断吗?如果该插件依赖于jQuery 1.9的
    browser
    属性,是的。@未定义:我想所有相关实例都需要修补,作为一种解决方法。是的,实际上它只检查IE6+1@JFK您的替换行不相同,并且不正确匹配,因为它在userAgent字符串中找到任何“6”。我在IE8中对它进行了测试,您的检查匹配(如果不匹配的话),因为userAgent字符串中有“msie”,在其他地方也有“6”:“Mozilla/4.0(兼容;msie 8.0;Windows NT 6.1;WOW64;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;Media Center PC 6.0;.NET4.0C;.NET4.0E)”。但它会返回什么?真/假?@SteveCav:如果你使用IE6,var
    IE6
    返回
    true
    否则
    false
    ,这实际上相当聪明。
    jQuery.browser = {};
    jQuery.browser.mozilla = /mozilla/.test(navigator.userAgent.toLowerCase()) && !/webkit/.test(navigator.userAgent.toLowerCase());
    jQuery.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase());
    jQuery.browser.opera = /opera/.test(navigator.userAgent.toLowerCase());
    jQuery.browser.msie = /msie/.test(navigator.userAgent.toLowerCase());