Tôi đã xem các trang hướng dẫn hoặc hỏi cách dự phòng từ Zepto sang jQuery (đặc biệt là đối với IE), dưới dạng here on SO và tại đây trên Zepto.js official page.
Tôi cũng đã xem các ví dụ về cách dự phòng từ jQuery được Google lưu trữ đến một trang web địa phương jQuery, như trong Modernizr.load doc page.Làm thế nào để dự phòng từ Zepto, tới Google CDN jQuery, đến jQuery cục bộ?
Câu hỏi của tôi là, làm cách nào để kết hợp hai thứ lại với nhau? Có thể cũng không sử dụng Modernizr.load, chỉ cần sử dụng các khối <script>
thích hợp?
Đây là những gì tôi đã đưa ra, nhưng có vẻ như IE không bao giờ tìm thấy phiên bản được Google lưu trữ. Ngoài ra, tôi không chắc chắn việc gán Zepto = jQuery
hoạt động đúng cách.
<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>
Có cách nào tốt hơn không? TA
Sửa
Sau @Ashfame câu trả lời, đây là những gì tôi đã sử dụng:
<!-- 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>
tôi không thể sử dụng URL protocol-less/kế hoạch-less của Google CDN như đối với một số lý do nó không hoạt động trên IE9 địa phương của tôi (nó chờ đợi rất nhiều, sau đó luôn rơi trở lại địa phương).
Tôi không bí danh nữa Zepto
với jQuery
: chỉ cần sử dụng $
trong mã JS.
Tôi dường như không gặp phải bất kỳ sự cố nào liên quan đến việc tải jQuery không đúng thứ tự w.r.t. mã phụ thuộc.
Tôi cũng đã thử với '//ajax.googleapis.com/...', không có tiền tố giao thức – superjos
Đã thử cũng với [đoạn mã này] (https://gist.github.com/3325940) có thể bởi người dùng @ Sébastien Grosjean - ZenCocoon: nó dường như hoạt động tốt, nhưng sau đó tôi không muốn sử dụng CDN Cloudflare, cũng như bất kỳ Zepto CDN nào khác. – superjos
Cũng thử với 'Modernizr.load', nhưng bằng cách nào đó nó có vẻ hơi quá nhiều cho mục đích. Dĩ nhiên tôi có thể sai. – superjos