有没有办法在DOM准备好之前执行jQuery代码?
答案 0 :(得分:17)
jQuery只是Javascript,所以问题实际上是“在DOM准备好之前是否可以运行JavaScript”,我猜你的意思是文档而不是DOM。
如果我们同意问题是“是否可以在文档准备好之前运行JavaScript”。然后答案是肯定的。遇到时会执行JavaScript。
这就是为什么你几乎总是看到$(function(){...})
或$(document).ready(function(){...})
的原因,因为大多数jQuery代码都要求文档准备就绪,但附加事件处理程序的代码肯定在文档准备好之前执行(否则它不会无法处理文件就绪事件。
通常您应该将您的Javascript包含在HTML的底部,但如果您希望之前执行它,则可以将其简单地放在文档中,例如在标题中。
<html>
<head>
...
<script>
//place your code to be executed early here
</script>
</head>
...
</html>
答案 1 :(得分:3)
如果在文档的头部包含jQuery,然后在头部的另一个脚本标记中编写代码,它将在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元素插入页面时与DOM元素进行交互(当浏览器呈现它时)。它依赖于CSS animation events。我写了a simple library (Progressive.js)来使这更容易处理。