我已经看到指导或询问如何从 Zepto 回退到 jQuery(尤其是 IE)的页面,如SO上的此处和Zepto.js 官方页面上的此处。
我还看到了有关如何从 Google 托管的 jQuery 回退到本地站点 jQuery 的示例,例如Modernizr.load doc page。
我的问题是,我如何把这两个东西放在一起?也可能不使用 Modernizr.load,只使用适当的<script>
块?
这是我想出的,但似乎 IE 从未找到 Google 托管的版本。另外,我不确定Zepto = jQuery
作业是否正常。
<script>
document.write('<script src=' +
('__proto__' in {} ?
'js/vendor/zepto.min' :
'https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min') +
'.js><\/script>');
</script>
<script>
if (window.jQuery) {
window.Zepto = window.jQuery; /* let jQuery alias Zepto */
}
else
{ /* here jQuery could be rightly undefined because Zepto is loaded,
so this could be wrong. */
document.write('<script src=' +
'js/vendor/jquery-1.8.0.min' +
'.js><\/script>');
}
</script>
<script>
if (window.jQuery) {
window.Zepto = window.jQuery; /* let jQuery alias Zepto */
}
else
{
/* same problem as before */
console.error('Zepto nor jQuery available!');
}
</script>
有没有更好的办法?助教
编辑
在@Ashfame 回答之后,这就是我用过的:
<!-- Load local Zepto.js or (as a fallback) jQuery from Google CDN or (as a fallback) local jQuery -->
<script>
document.write('<script src="' + ('__proto__' in {} ?
'js/vendor/zepto' :
'http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery') +
'.min.js"><\/script>')
</script>
<script>
window.Zepto || window.jQuery || document.write('<script src="js/vendor/jquery-1.8.0.min.js"><\/script>');
</script>
我无法使用 Google CDN 的无协议/无方案 URL,因为由于某种原因它在我的本地 IE9 上不起作用(它等待了很多,然后总是回退到本地)。
我不再Zepto
使用jQuery
: 别名了,只是$
在 JS 代码中使用。
我似乎没有遇到任何与 jQuery 乱序加载 wrt 依赖代码相关的问题。