Как загрузить один или несколько файлов JS/CSS, если один источник заблокирован?

Вот моя ситуация

Я создаю какой-то сайт, который загружает JavaScript из CDN, например, Google/jscdn.com. Но некоторые из них были полностью заблокированы в Китае. Но 50% моих посетителей из Китая, а остальные из других стран. Можно ли загрузить еще один источник, если конкретный заблокирован?

Например, если googleapis.com заблокирован, буду загружать с lib.sinaapp.com который доступен из Китая. И я хочу загрузить их в указанном порядке: попробуйте googleapis.com будет первый lib.sinaapp.com,

Возможно ли сделать это без серверного кода?

Спасибо

2 ответа

Вы могли бы использовать запасную технику 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>

Есть хорошая статья об этом.

Я предлагаю использовать загрузчик файлов JavaScript, такой как RequireJS или YepNope.

Они позволяют вам загружать файлы 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
    }
  }
}]);
Другие вопросы по тегам