$.browser.msie 为空或不是对象问题的多种解决方法_javascript技巧_脚本之家

‘$.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,
官方的解决方案是:

竭泽而渔办法一:

缓慢解决方法二:

就算不要用$.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 等。

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

自小编钻探是还是不是为 IE 6-8:

$.support.leadingWhitespace为IE中有意的习性,由此能够动用$.support.leadingWhitespace来判别浏览器是还是不是是IE6-8

if (!$.support.leadingWhitespace) {}

${ var ieFlag= $.support.leadingWhitespace;//定义判断IE8的变量 if{//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 >= 0; alert; // Safari <= 9 "[object HTMLElementConstructor]" var isSafari = Object.prototype.toString.call.indexOf > 0; alert; // Internet Explorer 6-11 var isIE = /*@cc_on!@*/ false || !!document.documentMode; alert; // Edge 20+ var isEdge = !isIE && !!window.StyleMedia; alert; // Chrome 1+ var isChrome = !!window.chrome && !!window.chrome.webstore; alert; // Blink engine detection var isBlink =  && !!window.CSS; alert;

缓慢解决方式四:

最近几年把三个项目标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文件的援用就可以。

用jQuery
Migrate的缓和措施尽管轻松无脑,可是会变成扩大三个附加的js库。对于不希罕扩大额外js库的童鞋,请小心上面代码加载地点为:jQuery文件之后,$.browser的代码在此之前。

jQuery.browser={};{jQuery.browser.msie=false; jQuery.browser.version=0;if(navigator.userAgent.match{ jQuery.browser.msie=true;jQuery.browser.version=RegExp.$1;}})();

以上便是本子之家小编整理的解决措施了,大家能够依照项目须求采纳比较轻便的。

相关文章

发表评论