объединение встроенных скриптов в <head>

0

У меня есть следующий код в части моего html, и мне было интересно, как я могу его очистить, чтобы оптимизировать загрузку.

<script type="text/javascript">

 function downloadJSAtOnload() {
 var element = document.createElement("script");
 element.src = "js/jquery.orbit-1.2.3.min.js";
 document.body.appendChild(element);
 }

 function downloadJSAtOnload() {
 var element = document.createElement("script");
 element.src = "http://code.jquery.com/jquery-latest.min.js";
 document.body.appendChild(element);
 }

 if (window.addEventListener)
 window.addEventListener("load", downloadJSAtOnload, false);
 else if (window.attachEvent)
 window.attachEvent("onload", downloadJSAtOnload);
 else window.onload = downloadJSAtOnload;

</script>
  • 1
    Обратите внимание, что будет использована только одна из этих функций downloadJSAtOnload (вторая). Также обратите внимание, что в современных браузерах, если бы вы дали этим функциям разные имена и вызывали их оба, не было бы никакой гарантии, что jQuery будет загружен перед подключаемым модулем Orbit (что, вероятно, приведет к сбою подключаемого модуля Orbit). ). У тебя было бы состояние гонки.
  • 1
    Если ваша цель - разрешить отображение страницы до загрузки сценариев, есть гораздо более простой способ: просто поместите теги сценария (в соответствующем порядке) в самый конец body , перед закрытием </body> тег.
Показать ещё 2 комментария
Теги:

1 ответ

2
Лучший ответ

Если ваша цель - разрешить отображение страницы перед загрузкой скриптов, гораздо проще: просто поместите теги сценария (в соответствующем порядке) в самом конце body, непосредственно перед закрытием </body> тег:

<!-- ...content of page... -->
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="js/jquery.orbit-1.2.3.min.js"></script>
</body>
</html>

Событие load на window объекте происходит очень поздно в процессе загрузки страницы, после того как все остальные ресурсы были полностью загружены (или не загружены). Таким образом, все изображения, как на переднем плане, так и на заднем плане, и т.д.

Поместив скрипты прямо в конец тела, вы получите их в очереди загрузки браузера в разумные сроки, но не заставляя браузер ждать появления сценария перед выполнением первоначальной рендеринга страницы. Вы также можете получить заказ (вы получите, что с defer атрибута на script элемента, а также, но не все браузеры поддерживают). Подробнее: Лучшие практики YUI для ускорения вашего сайта

Вы спросили в комментариях, когда вы будете использовать событие load для загрузки скриптов. Мой ответ: у меня никогда не было причин для этого.

  • 0
    это решает мою проблему с загрузкой контента в первую очередь, но теперь слайд-шоу, которое у меня есть на моем сайте, вообще не загружается? www.unifiedforuganda.com
  • 0
    я понял это ... спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню