即兴的。。使用jquery 1.9时-使用browser.msie时出错
在最新的jQuery1.9下运行时,我在ImpromptuVer4.1中遇到一个错误 未捕获的TypeError:无法读取未定义的属性“msie” 以前版本的jquery并非如此 即兴表演中的冒犯性台词是第20行:即兴的。。使用jquery 1.9时-使用browser.msie时出错,jquery,impromptu,Jquery,Impromptu,在最新的jQuery1.9下运行时,我在ImpromptuVer4.1中遇到一个错误 未捕获的TypeError:无法读取未定义的属性“msie” 以前版本的jquery并非如此 即兴表演中的冒犯性台词是第20行: var ie6 = ($.browser.msie && $.browser.version < 7); var ie6=($.browser.msie&&$.browser.version
var ie6 = ($.browser.msie && $.browser.version < 7);
var ie6=($.browser.msie&&$.browser.version<7);
您可以临时修补此行:
var ie6 = ($.browser.msie && $.browser.version < 7);
。。。现在它可以与jQueryV1.9.0+一起使用了。或者,您可以回滚到jqueryv1.8.3
编辑(2013年3月12日)
谢谢@johntrepreneur的评论,你是对的两个音符:
var ie6 = ( navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/) );
。。。应替换为以下内容:
var ie6 = ( navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/) );
var ie6 = ( navigator.userAgent.match(/msie [6]/i) );
。。。糟糕的是,我急忙写补丁。这应该能奏效我更喜欢这一个以范围为目标,只在
if (/msie [1-8]./.test(navigator.userAgent.toLowerCase()))
{
//code here
}
自从Jquery不推荐使用$.browser函数以来 我发现的最简单的方法是用javascript创建一个全局
var LTE_IE9 = false;
以及使用中的条件HTML IE选择器
<!--[if lte IE 9]>
<script>LTE_IE9 = true;</script>
<![endif]-->
我使用它
var browser = $.browser;
if ( ! browser ) {
var ua = navigator.userAgent.toLowerCase();
var m = /(msie) ([\w.]+)/.exec( ua ) || ! /compatible/.test(ua) && /(mozilla)/.exec( ua ) || [];
browser = { version: m[2] };
browser[ m[1] ] = true;
}
添加
jquerymigrate
插件
//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/1.2.1/jquery-migrate.min.js
$.browser.msie
从jquery 1.9.X中删除正如这里所说,$.browser在jquery中不再存在,因为版本1.9
因此,请检查,因为$.browse在jQuery V.1.4之后已被弃用,并在jQuery V.1.9之后被删除 您仍然可以通过以下代码行解决此问题(适用于所有浏览器)
对我来说很好
jQuery.browser
:已弃用:1.3,已删除:1.9Aha。。。所以,对于每个人来说,即兴应用都会中断吗?如果该插件依赖于jQuery 1.9的browser
属性,是的。@未定义:我想所有相关实例都需要修补,作为一种解决方法。是的,实际上它只检查IE6+1@JFK您的替换行不相同,并且不正确匹配,因为它在userAgent字符串中找到任何“6”。我在IE8中对它进行了测试,您的检查匹配(如果不匹配的话),因为userAgent字符串中有“msie”,在其他地方也有“6”:“Mozilla/4.0(兼容;msie 8.0;Windows NT 6.1;WOW64;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;Media Center PC 6.0;.NET4.0C;.NET4.0E)”。但它会返回什么?真/假?@SteveCav:如果你使用IE6,varIE6
返回true
否则false
,这实际上相当聪明。
jQuery.browser = {};
jQuery.browser.mozilla = /mozilla/.test(navigator.userAgent.toLowerCase()) && !/webkit/.test(navigator.userAgent.toLowerCase());
jQuery.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase());
jQuery.browser.opera = /opera/.test(navigator.userAgent.toLowerCase());
jQuery.browser.msie = /msie/.test(navigator.userAgent.toLowerCase());