0

我有一个网页要托管在支持 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 文件。

我考虑过<script id="loadable"></script>先使用然后使用$("#loadable").load("url");,但显然我依赖于首先加载 jquery,这是要最小化的文件。

4

3 回答 3

2
 <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>
于 2013-03-02T09:35:37.317 回答
1

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

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

使用 Google 托管 jQuery 的最佳方式,但退回到我在 Google 上的托管库失败

于 2013-03-02T09:37:18.947 回答
0

看看他们是如何在HTML5 样板文件中做到这一点的。

如果您查看GitHub存储库中 index.html 文件的底部,您将看到以下内容...

 <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 一个脚本标签来代替从本地源获取副本。

于 2013-03-02T09:41:57.807 回答