Каков наилучший способ отложить весь JavaScript после загрузки jQuery, когда jQuery находится внизу страницы? Я уже решил собрать все экземпляры jQuery и запустить их после загрузки jQuery, но мне нужно найти хороший способ собрать все внешние ссылки, сделанные с помощью <script src="file.js"></script>
.
В <head>
:
Это захватывает все функции jQuery, найденные на странице, и помещает их в массив.
<script>
window.q = [];
window.jQuery = function (f) {q.push(f)};
</script>
До </body>
:
Непосредственно перед телом я получаю библиотеку jQuery из API Google с локальным отступлением, а затем запускаю каждую функцию jQuery в массиве.
<script> window.jQuery || document.write('<script src=\"Scripts/jquery-1.7.1.js\"><\/script>')
// after jQuery loaded
jQuery(function () {
jQuery.each(q, function (index, f) {
f.call(document);
});
});
</script>
К вопросу ...
Итак, в моем коде изначально было несколько тегов <script>
. Самый простой способ сделать это - просто вызвать их с помощью jQuery.ajax () и набрать «script», как показано в примере ниже, но я хотел бы изучить возможности для улучшения параметров.
jQuery(function () {
jQuery.ajax({
url: "/scripts/somescript.js", // contains myFunction();
cache: true,
dataType: "script",
success: function() {
myFunction();
}
});
});
Примечания:
Это будет сделано только для необычных сценариев, которые не используются на каждой странице. Он находится в контексте виджетов, которые могут быть включены или выключены администратором сайта, поэтому я не объединяю его с остальной частью обычного JS, который я поместил ниже jQuery на моей главной странице (MVC).
Я настроил это с помощью html5boilerplate с несколькими модификациями, так что на самом деле у меня в голове есть один скрипт, который будет Modernizr 2.0.
Дайте мне знать ваши идеи и мысли по улучшению!
Спасибо!