浏览器提示style为空或不是对象怎么解决

高手们帮我分析下,浏览器提示style为空或不是对象怎么解决
最新回答
我只是个过路人

2024-09-30 02:59:06

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

'$.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下亲测可⽤

// 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 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;}})();以上就是⼩编整理的解决⽅法了,⼤家可以根据项⽬需要选择⽐较简单的。


5.9
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
$.browser.msie为空或不是对象问题的多种解决方法
$.browser.msie为空或不是对象问题的多种解决⽅法

'$.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来代替。

第 1 页
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]-->

第 2 页
<!--[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());