Есть ли способ выполнить jQuery-код до готовности DOM?
Запуск кода jQuery перед тем, как DOM готов?
Ответ 1
jQuery - это просто Javascript, поэтому на самом деле вопрос: "Можно ли запустить JavaScript до того, как DOM готов", и с этим я предполагаю, что вы имеете в виду документ, а не DOM.
Если мы сможем согласиться с тем, что вопрос: "Можно ли запустить JavaScript до того, как документ будет готов". Тогда ответ "да". JavaScript будет выполняться при обнаружении.
Вот почему вы почти всегда видите либо $(function(){...})
, либо $(document).ready(function(){...})
, потому что для большинства jQuery-кода требуется, чтобы документ был готов, но код, прикрепленный к обработчику событий, безусловно, выполняется до того, как документ будет готов (иначе он не сможет для обработки события готовности документа).
Обычно вы должны разместить свой Javascript в нижней части вашего HTML-кода, но если вы хотите, чтобы он был выполнен ранее, вы можете просто разместить его раньше в документе, например. в заголовке.
<html>
<head>
...
<script>
//place your code to be executed early here
</script>
</head>
...
</html>
Ответ 2
Если вы включите jQuery в начало вашего документа, а затем напишите свой код в другом теге script в голове, он будет запущен до того, как DOM будет готов:
<head>
<script src="jquery.js"></script>
<script>
// Do some stuff before the DOM is ready
</script>
</head>
<body>
<!-- Browser hasn't got this far, so no elements will be available -->
</body>
Однако, очевидно, вы не сможете взаимодействовать с любыми элементами DOM, так как они еще не существуют.
Сказав это, существует технология, которую вы можете использовать в современных браузерах, которые могут позволить вам взаимодействовать с элементами DOM, поскольку они вставлены на страницу (в то время как браузер ее выполняет). Он полагается на события анимации CSS. Я написал простую библиотеку (Progressive.js), чтобы упростить ее обработку.