Сценарий фактически не используется до тех пор, пока HTML не завершит загрузку - сценарий не может изменить DOM, пока HTML не загрузится. document.ready
ждет загрузки DOM. Так что нет смысла в том, чтобы поддерживать такие важные вещи, как таблицы стилей.
Разместите сценарии внизу страницы (перед </body>
тегом), чтобы как можно быстрее передать пользователю HTML и CSS. Браузер сможет визуализировать страницу намного быстрее, и тогда скрипты могут быть загружены, вместо того, чтобы оставлять пустую страницу, на которую пользователь может смотреть, пока он ждет загрузки скриптов.
Пока браузер постепенно рендерит страницу, если он попадает в тег скрипта (т.е. внешний файл Javascript), все останавливается . Скрипты имеют преимущество - во время загрузки скрипта браузер не начнет другую загрузку. т.е. изображения, таблицы стилей и любая другая параллельная загрузка будут заблокированы даже на разных именах хостов.
Недостаток размещения сценариев внизу страницы состоит в том, что, поскольку страница будет отображаться до инициализации сценариев, особенно быстрые кликеры смогут взаимодействовать с вашим сайтом до того, как Javascript будет готов.
Примечание. Для таблиц стилей верно обратное : таблицы стилей в нижней части страницы блокируют прогрессивный рендеринг, пока все таблицы стилей не будут загружены, а перемещение их в документ HEAD
устраняет проблему.
Есть хитрый трюк, чтобы загрузить javascript, не заставляя пользователя ждать, вы можете создать <script/>
элемент, используя createElement()
метод DOM, и добавить его на страницу непосредственно перед закрывающим </body>
тегом:
var oScript = document.createElement("script");
oScript.src = "/path/to/my.js";
document.body.appendChild(oScript);
Браузер не начинает загружать JS-скрипт, пока новый <script/>
элемент не будет добавлен на страницу. После завершения загрузки браузер интерпретирует код Javascript, содержащийся в нем.