$.browser.msie 为空或不是对象问题的多种解决方法
作者:mdxy-dxy 发布时间:2024-05-11 09:33:55
'$.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;}})();


猜你喜欢
- 这篇文章主要介绍了python自动化unittest yaml使用过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- 成功解决NLTK包的安装错误创建环境NLP_Pre_trainl环境conda create -n NLP_Pre_train python
- 行向量方式1import numpy as npb=np.array([1,2,3]).reshape((1,-1))print(b,b.s
- 1. 监测端口我们要引用的socket模块来校验端口是否被占用。1.1 socket是什么?简单一句话:网络上的两个程序通过一个双向的通信连
- 1 俄罗斯方块游戏《俄罗斯方块》原本是前苏联科学家阿列克谢·帕基特诺夫所开发的教育用软件,之后开始提供授权给各个游戏公
- 实现功能QuestType 1->查询语句, 2->更新语句, 3->删除语句, 4->插入语句<
- 功能如下: 这里就需要一开始只显示6个数据,点击展开才显示全部HTML里调用showdetailList:<div>  
- 使用python实现双向循环链表,供大家参考,具体内容如下双向循环链表: 将所有的数据存放到节点中,每一个节点相连接,首尾链接,每一个节点中
- 在翻译这篇文章时我想起一件事情,去年有个朋友在网上非常兴致勃勃的和我说:“我弄了一个很酷的网站,去玩玩吧!真的不错哦!”,然后他把网址发给我
- 本文实例讲述了js表格排序的方法。分享给大家供大家参考。具体如下:<html><head><title>
- 本文实例讲述了python中pass语句用法。分享给大家供大家参考。具体分析如下:1、空语句 do nothing2、保证格式完整3、保证语
- 1. 内置下载器中间件顺序{'scrapy.downloadermiddlewares.ajaxcrawl.AjaxCrawlMid
- 在数据查询的时候,有完整查询和模糊查询之分.在Access和SQL Server中使用模糊查询有一下几种查询:1.用_通配符查询"
- 前言图是一种抽象数据结构,本质和树结构是一样的。图与树相比较,图具有封闭性,可以把树结构看成是图结构的前生。在树结构中,如果把兄弟节点之间或
- Dreamweaver从出道以来,其简便易用而又功能强大的“行为”(Behavior)一直是大家所关注的热点之一。在Dreamweaver
- 方法一使用Python中的内置函数isupper()和islower()来判断一个字母是否为大写或小写字母。# 获取用户输入letter =
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了
- php 如何获取请求的xml数据,对方通过http协议post提交过来xml数据,php如何获取到这些数据呢?<?php $xml_d
- django中,很多时候我们都需要有一个地方来进行更加详细的权限控制,例如说哪些用户可以访问哪些页面,检查登录状态等,这里的话就涉及到了中间
- 本文教大家用原生js实现的简单网页主页右下角的广告框效果,利用好绝对定位,点击X关闭广告,里面的内容不管动图或者视频都可以。 代码最简洁,j