Impromptu ..使用jquery 1.9 - 使用browser.msie时出错

时间:2013-01-24 23:35:25

标签: jquery impromptu

在最新的jquery 1.9

下运行时,我在即兴ver 4.1中遇到错误

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

以前版本的jquery不是这种情况。

即兴的违规行是第20行:

var ie6 = ($.browser.msie && $.browser.version < 7);

7 个答案:

答案 0 :(得分:24)

您可以修补 Impromptu 替换此行:

var ie6 = ($.browser.msie && $.browser.version < 7);

......通过这个:

var ie6 = ( navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/) );

...现在它可以与jQuery v1.9.0 +一起使用。 (可选)您可以回滚到jQuery v1.8.3

编辑(2013年3月12日)

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

  1. 此编辑的行:

    var ie6 = ( navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/) );
    

    ......应该被这个替换:

    var ie6 = ( navigator.userAgent.match(/msie [6]/i) );
    

    ...我的坏,我赶紧写补丁。这应该可以解决问题。

  2. Impromptu 已完全删除了 last commit (2013年3月25日此原始帖子后)的IE6支持。 OP带来的问题是 Impromptu 确实打破了jQuery v1.9 + ... Impromptu js文件更新为last version还解决了问题

答案 1 :(得分:6)

我更喜欢这个定位范围,只会在&lt; IE9&amp; jQuery 1.9 +

if (/msie [1-8]./.test(navigator.userAgent.toLowerCase()))
{
    //code here
}

答案 2 :(得分:2)

自从Jquery弃用$ .browser功能以来 我找到的最简单的方法是在javascript中创建一个全局

var LTE_IE9 = false;

并使用条件HTML IE选择器

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

答案 3 :(得分:0)

我用它。

  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;
    }

答案 4 :(得分:0)

添加Jquery migrate插件

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

$.browser.msie已从&gt;中删除jquery 1.9.X

答案 5 :(得分:0)

如上所述, $。浏览器在jQuery中不再存在,因为版本 1.9

请检查browser.msie error after update to jQuery 1.9.1

答案 6 :(得分:0)

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

仍然可以通过这些代码行(针对所有浏览器)修复此问题

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());

对我来说很好;