jQuery的2.0是日益成熟: http://blog.jquery.com/2013/03/01/jquery-2-0-beta-2-released/
jQuery的2.0打破了旧的浏览器兼容性,因此我们必须知道什么时候留下来与jQuery 1.9。 推荐的方法是使用IE的条件注释:
<!--[if lt IE 9]>
<script src="jquery-1.9.1.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
<script src="jquery-2.0.0b2.js"></script>
<!--<![endif]-->
当前web开发的最佳实践表明,我们应该避免浏览器嗅探或用户代理字符串解析,但不是这种什么条件的意见是?
不jQuery的2.0只有突破与旧的Internet Explorer的兼容性? 还是有其他的浏览器,这将是更糟糕的2.0?
如果这影响的不仅仅是互联网浏览器(这是唯一的地方条件注释工作)更多,我们应该用那么什么策略,选择最佳的jQuery?
是有一个全局可访问的值/对象/功能/等,在JavaScript环境其存在可被用于用信号通知与jQuery 2.0兼容性(例如,特征检测)?
劳工问题
我的项目目前使用Require.JS到modularise我的代码。 我的代码目前加载jQuery的,只有当它遇到需要它的第一部分。
什么是加载使用jQuery的Require.JS的正确版本的最好方法?
我目前正在考虑:
niaccurshi的回答AMD规范的适应。
// Do this before your first use of jQuery.
var pathToJQuery
if('querySelector' in document
&& 'localStorage' in window
&& 'addEventListener' in window) {
pathToJQuery = '//cdn/jQuery2.0'
} else {
pathToJQuery = '//cdn/jQuery1.9'
}
require.configure({'paths':{
'jquery': pathToJQuery
}})
require(['jquery'], function($){ /* you get the one you need here */ })
其实还有一个更优雅的解决方案,它正在使用BBC
为他们的响应新闻网站。
它本质上检测被认为是浏览器的new
,因此,将与兼容jQuery 2.0+
,因此留下的一切作为一个old
的浏览器。 您可能能够复制这种Require.js
,但现实是,你不需要......
if(querySelector in document
&& localStorage in window
&& addEventListener in window) {
//Add jQuery 2.0+
} else {
//Add jQuery 1.9.0+
}
//This is intended to be a flag that can be checked against to see if the jQuery library has been loaded into the browser.
var jQueryVersion = 0;
function jQueryRunning(ver) {
//This could be "true", or could be a version number, it's largely down to your own system needs!
jQueryVersion = ver;
}
来源: 链接
您应该添加一个回调函数到每个脚本的jQuery
,这就要求jQueryRunning
与参数等于它的版本号,这可以帮助你决定进一步的功能,跑下来就行了,有让你知道的好处时, jQuery代码已经被嵌入(just in case the connection is slow and it takes a while to download)
。
如果使用Require.js
这可能不是你想关注的东西!
我说这是一个完美的解决方案,因为你说的很对,这个问题是不是只有老版本的IE
,这也是老版本的Firefox (before 3.5)
,老的移动浏览器(如果他们甚至用JavaScript处理!)