什么是jquery的快速、纯javascript替代品?浏览器(在jquery 1.9中删除)
What's a quick, pure javascript replacement for jquery.browser (removed in jquery 1.9)?
是的,我知道特征检测更可取。
我在我的代码库中有一个案例,我们使用$.browser.msie
和$.browser.version
来决定是否渲染一些CSS。编写代码的开发人员已经不在我们身边了,我不完全明白我应该在这里写什么样的特征检测。
作为一个快速修复,实现$.browser的最短方法是什么?Msie和$.browser.version?
我将复制jQuery 1.8.3中的代码。
// Limit scope pollution from any deprecated API
(function() {
var matched, browser;
// Use of jQuery.browser is frowned upon.
// More details: http://api.jquery.com/jQuery.browser
// jQuery.uaMatch maintained for back-compat
jQuery.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 = jQuery.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;
})();
使用条件注释代替JavaScript。
<!--[if lte IE 7]>
<link rel="stylesheet" href="ie.css" type="text/css">
<![endif]-->
快速修复,使脚本在正确重构之前不会中断(如果需要,为其他版本添加条件注释):
<!--[if IE 7]>
<script> if(typeof $!== typeof undefined){ $.browser = { msie : true, version : 7 }} </script>
<![endif]-->
<!--[if IE 8]>
<script> if(typeof $!== typeof undefined){ $.browser = { msie : true, version : 8 }} </script>
<![endif]-->
JQuery发布了一个Migrate插件来恢复$。浏览器时使用1.9。只要确保在生产服务器上使用Migrate的生产版本即可。开发版本将生成一堆控制台消息,告诉您在1.9 sans Migrate中代码将在哪里中断。
使用JQuery迁移恢复$。然而,浏览器可能不是最好的长期解决方案。顾名思义,它是一个过渡工具,我不知道它的浏览器检测功能是否会被积极维护。另一种选择是Modernizr。
我个人将做的是暂时将我的生产站点保留在JQ 1.8上,并在我的开发机器上使用Migrate的开发版本进行测试,以便在决定升级策略之前更好地了解1.9会破坏什么(他们做的不仅仅是删除$.browser)。
相关文章:
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- jQuery检测浏览器是否支持Zoom
- 通过浏览器加载页面时触发加载脚本(js或jQuery)'s”;返回“;作用
- 为什么不在浏览器上获得JQuery效果呢
- Jquery Draggable-在浏览器刷新时保持位置
- 防止“;jQuery(html)"防止触发浏览器请求图像和其他参考内容
- HTML5在浏览器大小javascript/jquery上调整字体大小
- 如何在jquery中检测浏览器的后退按钮,如果有任何对话框打开,请关闭它
- JQuery不会在Safari以外的任何浏览器中加载
- Jquery浏览器滚动问题
- JQuery :浏览器未聚焦时的焦点
- Javascript/jQuery浏览器检测
- JavaScript或jQuery浏览器返回按钮点击检测器
- Javascript/JQuery浏览器测试框架为IE9/FF/Chrome
- 如何避免在asp.net/javascript/jquery浏览器中打开相同的url链接
- TypeError: jQuery.浏览器未定义
- 简单吗?jquery浏览器兼容性问题
- jQuery 1.6浏览器检测
- 使用jQuery浏览器返回并关闭事件
- jQuery 1.9 浏览器检测