以下作品完美无缺:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="/scripts/jquery-1.6.2.min.js"%3E%3C/script%3E'))</script>
然而,为Jquery UI做同样的事情(但是改为window.ui - 这应该是正确的但我不是100%肯定)不起作用 - 实际上它每次都加载本地版本而不仅仅是CDN文件不可用(每个Firebug):
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js"></script>
<script>!window.ui && document.write(unescape('%3Cscript src="/scripts/jquery-ui-1.8.14.min.js"%3E%3C/script%3E'))</script>
当网络不可用时,它会加载本地版本,但加载CDN版本时也是如此(这意味着不必要的双重加载)。
答案 0 :(得分:4)
您的负载检查只需要稍微调整一下。 jQuery UI创建ui
对象under the jQuery (or $
) object,而不是window
。因此window.ui
应为window.jQuery.ui
,如下所示:
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js"></script>
<script>!window.jQuery.ui && document.write(unescape('%3Cscript src="/scripts/jquery-ui-1.8.14.min.js"%3E%3C/script%3E'))</script>
答案 1 :(得分:2)
这可能是愚蠢的,但我更喜欢OR逻辑优于AND:
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js"></script>
<script>window.jQuery.ui || document.write('<script src="/scripts/jquery-ui-1.8.14.min.js"<\/script>'))</script>