3

我想加载带有本地回退的 Foundation.min.js 的 CDN 版本。问题是:如何检测是否加载了foundation.js?

我看到它是用 jQuery、modernizr、Bootstrap 完成的……但我找不到 Foundation 的代码。除了“ window.Foundation ”部分外,它应该看起来像这样:

<!-- jsDelivr CDN -->
<script src="//cdn.jsdelivr.net/foundation/4.3.1/js/foundation.min.js"></script>
<!-- Fallback to local -->
<script>window.Foundation || document.write('<script src="/js/vendor/foundation.min.js"><\/script>')</script>
4

2 回答 2

6

好的,事实证明我的原始代码实际上是正确的。Foundation 是实际的 JavaScript 对象,我在其他地方有错字。所以,总而言之......你可以从 CDN 加载foundation.min.js,并使用这样的本地回退:

<!-- jsDelivr CDN -->
<script src="//cdn.jsdelivr.net/foundation/4.3.1/js/foundation.min.js"></script>
<!-- Fallback to local -->
<script>window.Foundation || document.write('<script src="/js/vendor/foundation.min.js"><\/script>')</script>

如果有人感兴趣,我已经为所有 Foundation 所需文件创建了带有 CDN/本地后备的要点: gist.github.com/kevinwake/6208601

于 2013-08-12T07:35:59.043 回答
1

RequireJS可能是您的一种选择。

来自http://requirejs.org/docs/api.html#pathsfallbacks的第 4.6.2 和 4.6.3 节

requirejs.config({
//To get timely, correct error triggers in IE, force a define/shim exports check.
enforceDefine: true,
paths: {
    jquery: [
        'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min',
        //If the CDN location fails, load from this location
        'lib/jquery'
    ]
}
});

//Later
require(['jquery'], function ($) {
});  

上面的代码将尝试 CDN 位置,但如果失败,则回退到本地 lib/jquery.js 位置。

祝你好运!

于 2013-08-12T00:35:41.670 回答