Javascript:在document.onload之前访问DOM

Javascript:在document.onload之前访问DOM,javascript,html,dom,Javascript,Html,Dom,我有一个页面有document.body.onload=function(){…},但由于该文档还包含外部标记等,因此会出现延迟onload似乎只有在这些外部网站做出某种回应后才会被解雇 我将代码放在onload中,因为我认为DOM树在此之前是不完全可用的(例如,document.getElementById(x)如果调用得太快,可能会返回null) 是否有一个事件在DOM中的所有内容都可访问之后,但在加载所有内容之前触发?确实可以: 也许你有两个选择: (一) 通过使用jQuery: 使用$(

我有一个页面有
document.body.onload=function(){…}
,但由于该文档还包含外部
标记等,因此会出现延迟
onload
似乎只有在这些外部网站做出某种回应后才会被解雇

我将代码放在
onload
中,因为我认为DOM树在此之前是不完全可用的(例如,document.getElementById(x)如果调用得太快,可能会返回null)

是否有一个事件在DOM中的所有内容都可访问之后,但在加载所有内容之前触发?

确实可以:

也许你有两个选择:

(一) 通过使用jQuery: 使用
$(document).ready()
,您可以在加载窗口之前加载或触发事件或执行任何您希望它们执行的操作

(二) DOMContentLoaded 参考:

当然你可以:

也许你有两个选择:

(一) 通过使用jQuery: 使用
$(document).ready()
,您可以在加载窗口之前加载或触发事件或执行任何您希望它们执行的操作

(二) DOMContentLoaded 参考:


您可以将
标记放在正文的末尾,因为html是按顺序解析的


此外,您还可以查看
jquery
的document.ready。即使您不想使用jquery,也可以看看它们是如何处理的
ready
完全满足您的要求。

您可以将
标记放在正文的末尾,因为html是按顺序解析的


此外,您还可以查看
jquery
的document.ready。即使您不想使用jquery,也可以看看它们是如何处理的<代码>准备好/代码>确实是你要的。

你应该考虑是否真的需要加载整个文档。只要您的库已经加载并且您感兴趣的DOM节点在页面上,您就可以立即执行操作。这类代码使页面“活跃起来”比等待最后一个资源加载的页面快得多:

<form name="foo">
    <!-- ... -->
</form>
<script>
    var form = new My.FormWidget(document.forms.foo);
</script>

var form=new My.FormWidget(document.forms.foo);

<>这有额外的好处,迫使您将逻辑封装在FultWigGe< /C>中(您应该希望保持一个“内联”脚本尽可能简短)。

您应该考虑是否真的需要加载整个文档。只要您的库已经加载并且您感兴趣的DOM节点在页面上,您就可以立即执行操作。这类代码使页面“活跃起来”比等待最后一个资源加载的页面快得多:

<form name="foo">
    <!-- ... -->
</form>
<script>
    var form = new My.FormWidget(document.forms.foo);
</script>

var form=new My.FormWidget(document.forms.foo);

这还有一个额外的好处,就是强制您将逻辑封装在
FormWidget
中(您应该希望保持这样的“内联”脚本尽可能简短)。

您还可以加载外部图像onload
document.body.onload
不存在。您可能想到了
。您也可以在加载
文档时加载外部图像。body.onload
不存在。您可能会想到
。这就是jquery,在问题中没有提到或标记。此外,这一点也没有帮助,您需要使用
ready
。即jquery,在问题中没有提及或标记。此外,这根本没有帮助,您需要使用
ready