【问题标题】:conditional loading of jquery and jquery UI issuesjquery的条件加载和jquery UI问题
【发布时间】:2011-10-01 23:00:43
【问题描述】:

以下工作完美:

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

?

【问题讨论】:

    标签: javascript jquery jquery-ui conditional


    【解决方案1】:

    这可能很愚蠢,但我更喜欢 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>
    

    【讨论】:

      【解决方案2】:

      您的负载检查只需要稍作调整。 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-16
        • 1970-01-01
        • 1970-01-01
        • 2011-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多