Лучший способ отправить все скрипты внизу страницы, если в нижней части также есть jQuery? - PullRequest
0 голосов
/ 24 февраля 2012

Каков наилучший способ отложить весь 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.

Дайте мне знать ваши идеи и мысли по улучшению!

Спасибо!

1 Ответ

0 голосов
/ 24 февраля 2012

Если я правильно понял ваш вопрос,

выполнение javascript, когда документ готов (aka $(document).ready()), только замедляет загрузку страницы вниз, так как браузер выполняет javascript, как только он его читает, вставьтеjquery как сначала <link href...>, а затем весь необходимый вам код JavaScript,

обратите внимание, что если javascript попытается использовать html, который находится под ним, он не будет работать (так как документ все еще загружается, все еще загружается), поэтомупоместите его в правильное положение

...