Zeptoから jQuery (特に IE の場合) にフォールバックする方法を指示または質問するページを見てきました。Modernizr.load doc page
のように、Google がホストする jQuery からローカル サイトの jQuery にフォールバックする方法の例も見てきました。
私の質問は、どうすれば 2 つのものを組み合わせることができるかということです。おそらく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>
より良い方法はありますか?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>
Google CDN のプロトコルレス/スキームレス URL は、何らかの理由でローカル IE9 で機能しなかったため、使用できませんでした (かなり待機した後、常にローカルにフォールバックします)。
私はもう : でエイリアスを作成しませんでしたがZepto
、JS コードjQuery
で使用されました。$
jQuery の順不同の wrt 依存コードのロードに関連する問題は発生していないようです。