$.browser.msie 为空或不是对象问题的多种解决方法

发布时间 - 2026-01-11 00:14:53    点击率:

'$.browser.msie' 为空或不是对象,这个是jQuery错误
出现这个错误,是因为升级了jQuery版本,从1.9以前升级到1.9以后,因为$.browser.msie在1.9以后的jQuery中不存在了,所以报错。

jQuery 1.9 移除了 $.browser 的替代方法
$.browser是通过正则表达式来匹配userAgent来判断浏览器版本和种类的.jquery1.3.2版本的文档中已经声明jquery.browser及jquery.browser.version建议弃用,可以使用jquery.support来代替。

jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9或者jQuery 1.10.1等。 如果要全面支持 IE,并混合使用 jQuery 1.9 和 2.0, 官方的解决方案是:

解决方法一:

<!--[if lt IE 9]>
<script src='/jquery-1.10.1.min.js'></script>
<![endif]-->
<!--[if gte IE 9]>
<script src='/jquery-2.0.2.min.js'></script>
<![endif]-->

解决方法二:

就是不要用$.browser.msie来判断,在网上找了一些能够直接替换的解决办法

$.browser.mozilla = /firefox/.test(navigator.userAgent.toLowerCase());
$.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase());
$.browser.opera = /opera/.test(navigator.userAgent.toLowerCase());
$.browser.msie = /msie/.test(navigator.userAgent.toLowerCase());

等号后面的表达式返回的就是 true/false, 可以直接用来替换原来的 $.browser.msie 等。

检查是否为 IE6:

// Old
if ($.browser.msie && 7 > $.browser.version) {}
// New
if ('undefined' == typeof(document.body.style.maxHeight)) {}

检查是否为 IE 6-8:

$.support.leadingWhitespace为IE中特有的属性,因此可以利用$.support.leadingWhitespace来判断浏览器是否是IE6-8

代码一

if (!$.support.leadingWhitespace) {}

代码二

$(function($){
  var ieFlag= $.support.leadingWhitespace;//定义判断IE8的变量
  if(!ieFlag){//IE8以下
   //IE代码
  }else{
   //其他代码
  }
 });

解决方法三

/*后发现的判断浏览器类型通用类型*/老外写的一篇文章,在IE、Firefox、Google下亲测可用

原文地址:http://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser

// Firefox 1.0+
 var isFirefox = typeof InstallTrigger !== 'undefined';
 alert("isFirefox:"+isFirefox);
 // Opera 8.0+
 var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
 alert("isOpera:"+isOpera);
 // Safari <= 9 "[object HTMLElementConstructor]"
 var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
 alert("isSafari:"+isSafari);
 // Internet Explorer 6-11
 var isIE = /*@cc_on!@*/ false || !!document.documentMode;
 alert("isIE:"+isIE);
 // Edge 20+
 var isEdge = !isIE && !!window.StyleMedia;
 alert("isEdge:"+isEdge);
 // Chrome 1+
 var isChrome = !!window.chrome && !!window.chrome.webstore;
 alert("isChrome:"+isChrome);
 // Blink engine detection(7)
 var isBlink = (isChrome || isOpera) && !!window.CSS;
 alert("isBlink:"+isBlink);

解决方法四:

最近把一个项目的jQuery升级到最新版,发现有些页面报如下错误

Cannot read property 'msie' of undefined

上jQuery网站上搜了一下,原因是$.browser这个api从jQuery1.9开始就正式废除,js代码里只要用到$.browser就会报这个错。具体说明参见jQuery官方说明。

楼主顺便扩展阅读了一下,发现jQuery 1.9把所有在之前版本里标记为deprecated的api都正式删除了,彻底不再向后兼容。对于升级到最新jQuery的童鞋而言,这意味着得花费一些额外的时间把代码升级使用新的api,或者自己另外实现这些被删除的方法。幸运的是,jQuery团队意识到了这个break change带来的种种不便,推出了一个叫jQuery Migrate插件,用于能够自动恢复那些在最新版本里被废弃的API。只要引用了这个插件,已有的js代码无须改动就能和最新的jQuery库一起正常运行。

下面是具体的解决方法,首先要下载jQuery Migrate插件,然后在引用jQuery js的地方之后加上对jQuery Migrate js文件的引用即可。

<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的解决方法虽然简单无脑,但是会导致增加一个额外的js库。对于不喜欢增加额外js库的童鞋,请注意下面代码加载位置为: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;}})();

以上就是小编整理的解决方法了,大家可以根据项目需要选择比较简单的。


# $.browser.msie  # 为空或不是对象  # 解决jquery插件:TypeError:$.browser is undefined报错的方法  # jQuery 1.9移除了$.browser可以使用$.support来替代  # jQuery 1.9使用$.support替代$.browser的使用方法  # jQuery下通过$.browser来判断浏览器.  # JQuery下的Live方法和$.browser方法使用代码  # 解决方法  # 的是  # 升级到  # 会报  # 移除  # 童鞋  # 是因为  # 就能  # 不喜欢  # 可以直接  # 找了  # 请注意  # 可以使用  # 报错  # 一个叫  # 可以根据  # 取而代之  # 最新版本  # 可以利用  # 解决办法 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Python文件操作最佳实践_稳定性说明【指导】  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  如何快速上传自定义模板至建站之星?  大连网站制作公司哪家好一点,大连买房网站哪个好?  网站制作企业,网站的banner和导航栏是指什么?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  Android 常见的图片加载框架详细介绍  javascript基于原型链的继承及call和apply函数用法分析  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  iOS验证手机号的正则表达式  Laravel如何与Pusher实现实时通信?(WebSocket示例)  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  Laravel如何处理CORS跨域请求?(配置示例)  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  如何在宝塔面板中创建新站点?  java中使用zxing批量生成二维码立牌  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  Laravel Fortify是什么,和Jetstream有什么关系  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  python中快速进行多个字符替换的方法小结  网站制作免费,什么网站能看正片电影?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  网站制作大概多少钱一个,做一个平台网站大概多少钱?  制作企业网站建设方案,怎样建设一个公司网站?  进行网站优化必须要坚持的四大原则  网站优化排名时,需要考虑哪些问题呢?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  html如何与html链接_实现多个HTML页面互相链接【互相】  网站制作软件有哪些,制图软件有哪些?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  七夕网站制作视频,七夕大促活动怎么报名?  晋江文学城电脑版官网 晋江文学城网页版直接进入  如何在阿里云部署织梦网站?  如何快速搭建安全的FTP站点?  iOS中将个别页面强制横屏其他页面竖屏  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  如何用PHP快速搭建CMS系统?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Python3.6正式版新特性预览  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  香港服务器部署网站为何提示未备案?  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  如何在万网主机上快速搭建网站?