jQuery错误解决方法:Uncaught TypeError: Cannot read property 'msie' of undefined

前端开发jQuery 3547

错误提示:

Uncaught TypeError: Cannot read property 'msie' of undefined

原因是jQuery升级到1.9之后移除了jQuery.browser()方法,具体请参考官网关于1.9的升级记录:http://jquery.com/upgrade-guide/1.9/

那么如何让老插件兼容最新版的jQuery

解决方法一:jQuery-Migrate

使用jquery-Migrate插件,只需要引入它就可以把旧版jQuery插件的功能全部保留下来了。

作用说明:APIs and features removed from jQuery core;将你的项目从旧版本jQuery迁移至最新3.x版

Github地址:https://github.com/jquery/jquery-migrate/

CDN引入

<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<script src="https://code.jquery.com/jquery-migrate-3.0.0.js"></script>

注意,在引入前需要先引入jQuery库,建议在引入jQuery代码的下一行引入jquery-Migrate

解决方法二

此法仅针对 Cannot read property 'msie' of undefined 错误,将下面代码放在作用代码前即可

jQuery.browser = {};
(function () {
    jQuery.browser.msie = false;
    jQuery.browser.version = 0;
    if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) {
        jQuery.browser.msie = true;
        jQuery.browser.version = RegExp.$1;
    }
})();

总结

如果你的项目很大,有未知的使用了旧版jQuery Api的情况建议使用方法一,如果仅仅是msie错误的话还是简单少引用一个文件只需要加入几行代码即可解决问题

Read Comments

  • nreg4 years ago0

    完美

Post Comment