Хорошо, поэтому я сделал себе небольшой объект для оценки всего загружаемого jquery с помощью резервного средства (и использовал его для загрузки всех моих js-файлов, в действительности), используя JSON:
<script type="text/javascript">
/* Library loading object */
var ScriptLoader = {
//values
head_tag : document.getElementsByTagName('head')[0],
fallback : false,
//functions
createScript: function(script_path) {
var script_tag = document.createElement('script');
script_tag.type = 'text/javascript';
script_tag.src = script_path;
return script_tag;
},
addToHead : function(tag) {
ScriptLoader.head_tag.appendChild(tag);
},
addLoadEvent : function(func) {
var prev = window.onload;
if (typeof window.onload !== 'function') {
window.onload = func;
} else {
window.onload = function() {
prev();
func();
}
}
}
};
//Loading jquery, modernizr, and my js files when window is ready.
ScriptLoader.addLoadEvent(function() {
/* Load from jquery's cdn for speed + auto latest download */
var scripts = ['http://code.jquery.com/jquery-latest.min.js',
'scripts/modernizr.js',
'scripts/script.js'],
idx = 0;
for (; idx < scripts.length; idx++) {
ScriptLoader.addToHead(ScriptLoader.createScript(scripts[idx]));
}
});
//jquery fallback
ScriptLoader.addLoadEvent(function() {
if (typeof window.jQuery === undefined) {
ScriptLoader.fallback = true;
ScriptLoader.addToHead(ScriptLoader.createScript('scripts/jquery-mini-1.6.2.js'));
}
});
//grab info
(function() {
setTimeout(function() {
console.log('jquery loaded: ' + (window.jQuery !== undefined));
console.log('used fallback: ' + ScriptLoader.fallback);
}, 1000);
})();
Прямо сейчас, это полностью работает, но замечаете постоянные обращения к имени моего объекта?Есть ли способ просто использовать этот вместо этого?Я как бы получаю всю область действия функционального уровня, а также понимаю, что это присваивается ближайшей включающей функции, но я не совсем ясен по этому поводу.
Я также кратко читаю, но не понимаюне полностью понимаю замыкания ..
Спасибо:)