Как загрузить один или несколько файлов 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
}
}
}]);