Насколько я знаю, requirejs
обычно используется так:
require(['http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'],
function() {
// Code that depends on jQuery here.
}
);
Функция, зависящая от jQuery, будет вызываться только при загрузке jQuery. Но если jQuery не загружается, код, который зависит от него, никогда не будет выполнен.
Поскольку в этом случае вы хотите попробовать использовать локальный jQuery, вам, вероятно, следует отследить ошибку тайм-аута загрузки скрипта и попытаться загрузить jQuery из другого источника. (Но учтите, что ошибки тайм-аута медленные.)
В документах :
мало информации об обработке ошибок
Чтобы обнаружить ошибки, вы можете переопределить require.onError()
, чтобы получить ошибки. Объект ошибки, переданный в функцию onerror, будет содержать два свойства, если это проблема тайм-аута:
- requireType : значение будет "timeout"
- requireModules : массив имен модулей / URL, время которых истекло.
Я думаю, код может выглядеть так (не проверено):
var functionThatDependsOnJquery = function() {
// Code that depends on jQuery here.
};
require.onError = function(err) {
# If we have Google jQuery load timeout...
if (err.requireType = "timeout" &&
err.requireModules.indexOf('http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js') != -1
) {
# ...we'll try to load it from another source.
require(['/scripts/localJquery'], functionThatDependsOnJquery);
}
# We have another script load timeout, so we just throw an error
# as requirejs normally does.
else { throw err; }
};
# Try to load Google jQuery.
require(['http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'],
functionThatDependsOnJquery);