在DOM准备好之前运行jQuery代码?

时间:2012-09-26 09:08:56

标签: jquery

有没有办法在DOM准备好之前执行jQuery代码?

2 个答案:

答案 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)来使这更容易处理。