[jQuery] Cannot read property ‘msie’ of undefined错误的解决方法 --转

初用Yii的srbac模块。出现 Cannot read property ‘msie’ of undefined 错误。上网查询,找到以下的文章。使用文末的打补丁的方法,成功搞定。感谢。jquery

===============================api

http://blchen.com/jquery-can-not-read-property-msie-of-the-undefined-error-solution/ide

最近把一个项目的jQuery升级到最新版,发现有些页面报错Cannot read property ‘msie’ of undefined。上jQuery网站上搜了一下,缘由是$.browser这个api从jQuery1.9开始就正式废除,js代码里只要用到$.browser就会报这个错。具体说明参见jQuery官方说明网站

楼主顺便扩展阅读了一下,发现jQuery· 1.9以后的版本把全部在早期版本里标记为deprecated的api都正式删除了,再也不向后兼容。对于升级到最新jQuery的童鞋而言,这break change意味着得花费一些额外的时间把迁移应用层代码到新api。幸运的是,jQuery团队考虑到了这个改动带来的不便,推出了一个插件jQuery Migrate,这个插件可以自动恢复那些在最新版本里以后被废弃的API,从而让已有的js应用层代码无须改动就能和最新的jQuery库一块儿正常运行。ui

下面是具体的解决方法,先下载最新的jQuery Migrate插件,而后在引用jQuery js的地方以后加上一行对jQuery Migrate js文件的引用便可。spa

<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script>

对于不喜欢用jQuery Migrate的童鞋,能够以下另一种方法,注意确保下面代码的加载顺序在jQuery文件以后,$.browser的代码以前。插件

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;}})();
相关文章
相关标签/搜索