条件加载jquery和jquery UI问题

时间:2011-07-09 17:43:07

标签: javascript jquery jquery-ui conditional

以下作品完美无缺:

<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版本时也是如此(这意味着不必要的双重加载)。

2 个答案:

答案 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>