如果我将jquery代码放在</body>
标记之前,那么DOM肯定会准备好吗?
我有一些jquery代码,当我把它放在$ .ready()函数中时,我可以在javascript代码运行之前看到页面的样子。
但是,如果我将代码放在</body>
标记之前,那么我只能看到运行javascript后页面的样子。我使用计时器来查看时间差,并且在</body>
结束之前执行的代码比$ .ready中的代码早300ms执行。
编辑:如果我在</body>
标记之前调用我的代码时DOM已经准备就绪,那么将我的代码放在$ .ready中有什么好处,考虑到如果我之前把它放在我的javascript中会更快执行</body>
?
答案 0 :(得分:4)
是的,到那时DOM已经准备就绪,但您仍然不能确定您没有看到页面的闪存处于原始状态。
如果您从头开始在页面中看不到某些内容,则可以在样式表中使用CSS来隐藏它,而不是使用jQuery隐藏它。这样你就可以确保在你有机会隐藏它们之前不会闪现元素。
答案 1 :(得分:3)
是的,此时DOM已准备就绪。来自Google Closure Library邮件列表的This thread可能会引起关注,但遗憾的是据我所知他们没有跟进实际的文章。来自该主题的Erik Arvidsson的一些引用:
简短的故事是我们不想等待DOMContentReady(或者更糟 加载事件)因为它会导致糟糕的用户体验。
和(关于脚本元素正上方的DOM元素是否真的存在)
DOM节点在那里,如果你查询它的大小或其他东西 需要回流才会发生回流,以便布局数据 最新的。
进一步说明:
答案 2 :(得分:1)
我99%确定它可以在<script>
标记之前存在的DOM上运行。这意味着,如果它在</body>
之前,它将起作用。
我很想知道在结束</script>
之后它是否曾在某事上发挥作用。就像互联网加载页面的速度可能比处理器启动JavaScript代码的速度快...我怀疑它是否因为如果你做document.write,它应该与<script></script>
处于同一点。