我正在尝试使用流沙和 jquery 插件,但 jquery 1.9.1 出现此错误。
“未捕获的类型错误:无法读取未定义的属性 'msie'”
我知道 msie 是 jQuery.browser 属性上的标志 jQuery.browser 自 1.3 版以来已被弃用,并在 jQuery 1.9.0 中被删除
这就是导致错误的原因。但是有没有办法让流沙再次起作用?
任何帮助或建议都会很棒!
提前致谢!
我正在尝试使用流沙和 jquery 插件,但 jquery 1.9.1 出现此错误。
“未捕获的类型错误:无法读取未定义的属性 'msie'”
我知道 msie 是 jQuery.browser 属性上的标志 jQuery.browser 自 1.3 版以来已被弃用,并在 jQuery 1.9.0 中被删除
这就是导致错误的原因。但是有没有办法让流沙再次起作用?
任何帮助或建议都会很棒!
提前致谢!
jQuery.browser
和上的(几个)强制性词jQuery.support
:
jQuery.browser
包含用户代理的标志,从navigator.userAgent读取。我们建议不要使用此属性;请尝试改用特征检测(请参阅 参考资料jQuery.support
)。jQuery.browser
可能会在 jQuery 的未来版本中移动到插件中。
$.browser
与其使用检测当前用户代理并根据正在运行的浏览器更改页面呈现,不如使用特征检测。为了使这个过程更简单,jQuery 执行了许多这样的测试并设置jQuery.support
对象的属性。
故事的寓意:更新您的项目,消除对jQuery.browser
. 要测试和查找您的项目过度依赖已弃用或删除的方法或属性的区域,请参阅jQuery-migrate
.
另请参阅Modernizr.js和YepNope.js以了解 jQUery 特征检测的替代方法。
一个要替换的 jQuery shim 文件$.browser
,由 fancyBox-rails 项目提供:
// jQuery 1.9 has removed the `$.browser` property, fancybox relies on
// it, so we patch it here if it's missing.
// This has been copied from jQuery migrate 1.1.1.
if ( !jQuery.browser ) {
var uaMatch = function( ua ) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
/(webkit)[ \/]([\w.]+)/.exec( ua ) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
/(msie) ([\w.]+)/.exec( ua ) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
matched = uaMatch( navigator.userAgent );
browser = {};
if ( matched.browser ) {
browser[ matched.browser ] = true;
browser.version = matched.version;
}
// Chrome is Webkit, but Webkit is also Safari.
if ( browser.chrome ) {
browser.webkit = true;
} else if ( browser.webkit ) {
browser.safari = true;
}
jQuery.browser = browser;
}
https://github.com/hecticjeff/fancybox-rails/blob/master/vendor/assets/javascripts/jquery.browser.js
您正在使用quicksand
包含code
(i.e $.browser)
从jQuery
version 开始删除的插件1.9
。