【问题标题】:Try loading CSS and JS online and if that fails load locally尝试在线加载 CSS 和 JS,如果失败则在本地加载
【发布时间】:2013-03-02 09:33:16
【问题描述】:

我有一个网页要托管在支持 Wi-Fi 和 3G 的移动设备上。

由于 3G 数据可能需要花钱并且通常是有限的,我想尽量减少设备上传的数据量。所以我基本上想做的是以下几点:

尝试在线加载jquery脚本:

<script type="text/javascript" src="http://code.jquery.com/ui/1.8.13/jquery-ui.min.js"></script>

并且如果无法正确加载(例如,如果用户没有连接到互联网,只是连接到手机),从本地副本加载它:

<script type="text/javascript" src="js/jquery-copy.js"></script>

这同样适用于 css 文件。

我曾想过有一个&lt;script id="loadable"&gt;&lt;/script&gt;,然后使用$("#loadable").load("url");,但显然我依赖于首先加载jquery,这是要最小化的文件。

【问题讨论】:

    标签: javascript css dynamic load


    【解决方案1】:
     <script src="http://code.jquery.com/ui/1.8.13/jquery-ui.min.js"></script>
     <script>!window.jQuery && document.write(unescape('%3Cscript src="js/jquery-copy.js"%3E%3C/script%3E'))</script>
    

    【讨论】:

    • 我会将您的问题标记为答案,因为您是第一个提供有效解决方案的人,但我必须说我不喜欢乞讨的评论。
    【解决方案2】:

    我编辑了答案。我认为波纹管是最优雅的解决方案。

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript">window.jQuery || document.write('<script type="text/javascript" src="path/to/your/jquery"><\/script>')</script>
    

    Best way to use Google's hosted jQuery, but fall back to my hosted library on Google fail

    【讨论】:

      【解决方案3】:

      HTML5 boilerplate.查看他们是如何做到的

      如果您查看 GitHub 存储库中的 bottom of the index.html file,您将看到以下内容...

       <script src="http://code.jquery.com/ui/1.8.13/jquery-ui.min.js"></script>
           <script>!window.jQuery && document.write(unescape('%3Cscript src="js/jquery-copy.js"%3E%3C/script%3E'))</script>
      

      它是如何工作的?

      • 首先尝试抓取CDN版本(Google的CDN url 上面使用了,但当然你可以链接到你喜欢的任何来源)。

      • 紧接着,我们检查 jQuery 全局对象。

      • 如果 jQuery 不存在,显而易见的假设是我们不存在 设法从 CDN 获取代码,然后我们 document.write 一个 脚本标签改为从本地来源获取副本。

      【讨论】:

      • -1 如果您要引用 h5bp,请使用您指向的文件中的代码作为参考。 h5bp 的索引不包括来自 cdn 的 jquery UI;它使用协议相关的 url;并且它不需要对要写入的字符串(脚本标签)进行编码和转义。如果代码可以复制+粘贴,我不会评论,但事实并非如此。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      • 2018-01-06
      • 2012-05-28
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多