我見過指示或要求如何從Zepto回滾到jQuery(尤其是IE)的頁面,如here on SO和Zepto.js official page。
我也見過如何從Google託管的jQuery回退到本地站點jQuery的示例,如Modernizr.load doc page。如何從Zepto回滾到Google CDN jQuery到本地jQuery?
我的問題是,我怎麼把這兩樣東西放在一起?可能也沒有使用Modernizr.load,只需使用合適的<script>
塊?
這是我想出來的,但似乎IE從來沒有找到谷歌託管版本。另外,我不確定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>
有沒有更好的方法? TA
編輯
@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>
我無法使用谷歌CDN的協議不太/方案少網址爲某種原因,它不適用於我的本地IE9(它等待很多,然後總是回落到本地)。
我沒有別名Zepto
與jQuery
:在JS代碼中只使用$
。
我似乎沒有遇到與jQuery加載亂序w.r.t有關的任何問題。依賴代碼。
我也試過'//ajax.googleapis.com/...',這是沒有協議前綴 – superjos
也嘗試了[這個片段](https://gist.github.com/3325940)可能由用戶@SébastienGrosjean - ZenCocoon:它似乎工作正常,但後來我不想使用Cloudflare CDN,也沒有任何其他Zepto CDN。 – superjos
也試過用'Modernizr.load',但不知何故,它似乎有點太多了。我當然可能是錯的。 – superjos