Javascript 如果一个源被阻止,如何加载一个或多个JS/CSS文件?

Javascript 如果一个源被阻止,如何加载一个或多个JS/CSS文件?,javascript,google-cdn,Javascript,Google Cdn,这是我的情况 我正在创建一些从CDN加载JavaScript的网站,比如Google/jscdn.com。但其中一些在中国被完全封锁。但我的访客中有50%来自中国,另一半来自其他国家。如果某个源被阻塞,是否可以再加载一个源 例如,如果googleapis.com被阻止,我将从lib.sinaapp.com加载,它可以从中国访问。我想按给定的顺序加载它们:首先尝试googleapis.com,然后再lib.sinaapp.com 是否可以在没有服务器端代码的情况下执行此操作 谢谢您可以使用cdn回

这是我的情况

我正在创建一些从CDN加载JavaScript的网站,比如Google/jscdn.com。但其中一些在中国被完全封锁。但我的访客中有50%来自中国,另一半来自其他国家。如果某个源被阻塞,是否可以再加载一个源

例如,如果
googleapis.com
被阻止,我将从
lib.sinaapp.com
加载,它可以从中国访问。我想按给定的顺序加载它们:首先尝试
googleapis.com
,然后再
lib.sinaapp.com

是否可以在没有服务器端代码的情况下执行此操作


谢谢

您可以使用cdn回退技术

例如:

<script src="//ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.0.min.js"></script>
<script>window.jQuery || document.write('<script src="js/jquery-2.0.0.min.js">\x3C/script>')</script>

window.jQuery | | document.write('\x3C/script>'))

有一篇关于的好文章。

我的建议是使用像这样的JavaScript文件加载器

它们允许您动态加载JavaScript文件,并且您可以控制何时加载文件

下面是您的需求在YepNope中的一个简单实现:

//assuming that your JavaScript file is script.js
//put this flag in both script.js files
var scriptLoaded = true;

//put this in your main JS file
yepnope([{
  load: 'http://googleapis.com/123/script.js', //load this one first
  complete: function () {
    if (!scriptLoaded) {
      yepnope('http://lib.sinaapp.com/123/script.js');  //if not already loaded, load this file
    }
  }
}]);

有什么特别的理由不从允许的文件中加载它们吗?这是一个很好的方法。但问题是,中国政府封锁了谷歌CDN主机,不知何故,该请求正处于未决状态。因此,执行
$| | xxx
代码需要很长时间。不幸的是,在完成之前,无法知道请求是成功还是失败。也许你想要一个解决方案,检查谷歌,然后超时,并切换到另一个网址,如果没有回应后xx秒?