Каков наилучший способ задержать весь JavaScript после загрузки jQuery, когда jQuery находится в нижней части страницы? Я уже решил собрать все экземпляры jQuery и инициировать их после загрузки jQuery, но мне нужно найти хороший способ получить все внешние ссылки, сделанные с помощью <script src="file.js"></script>
.Лучший способ отправить все скрипты в нижней части страницы, когда есть jQuery в нижней части?
В <head>
:
Это захватывает все функции JQuery, найденные на странице, и толкает их в массив.
<script>
window.q = [];
window.jQuery = function (f) {q.push(f)};
</script>
Перед </body>
:
Просто перед телом, я получаю библиотеку JQuery от Google API с локальным запасным вариантом, а затем запустить каждую функцию 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() и набирать «скрипт», как показано в примере ниже, но я хотел бы изучить возможности для лучших вариантов.
jQuery(function() {
jQuery.ajax({
url: "/scripts/somescript.js", // contains myFunction();
cache: true,
dataType: "script",
success: function() {
myFunction();
}
});
});
Примечания:
Это будет сделано только для необычных сценариев, которые не используются на каждой странице. Это в контексте виджетов, которые могут быть включены или отключены администратором сайта, поэтому я не совмещаю его с остальной частью общей JS, которую я поставил ниже jQuery на моей главной странице (MVC).
Я установил это с помощью html5boilerplate с несколькими модификациями, поэтому на самом деле у меня есть один скрипт в голове, который будет Modernizr 2.0.
Дайте мне знать свои идеи и мысли для улучшения!
Спасибо!
Примечание. Ваш первый метод будет разрушать цепочку jQuery, например: '$ (document) .load (..). unload (...) ' –