一个body的onLoad函数什么时候被调用?

7

我需要了解何时调用body的onload

我在w3school上读到onload=Script to be run when a document load这是什么意思?

这是否意味着:

  1. HTML/JSP页面在渲染任何元素(如任何table或JSP脚本)之前被加载,例如:<%= request.getParameter("NAME") %>
  2. 还是在页面/主体呈现后?

例如: 我有一堆参数(<%= request.getParameter("NAME") %>,...)因此我将它们放在某个隐藏的表单项中,然后在主体加载时我可以使用它们吗?


5
w3schools是一个不良资源:http://w3fools.com。虽然在某些情况下可能并不重要,但最好使用像Mozilla的[MDN](https://developer.mozilla.org/)这样的正确参考文献。 - ThiefMaster
@ThiefMaster:我的工作主要涉及到Internet Explorer 8,是否仍然可以参考MDN - user801116
1
通常会提到其他浏览器是否有重要的差异。但是为了确保,我会在这种情况下检查 MSDN,因为那是 IE 的官方资源。 - ThiefMaster
4个回答

11

w3schools 不同,MDN 解释了事件的触发时机:

在文档加载过程结束时触发 load 事件。此时,文档中的所有对象都在 DOM 中,所有图像和子框架都已完成加载。

因此,DOM 树已准备就绪,并且所有元素都已加载完成。


给@Sjoerd和@ThiefMaster:Sjoerd说“Document.onload可能在页面呈现或图像加载之前被触发。”而你们说“文档中的所有对象都在DOM中,并且所有图像和子框架都已完成加载。”哪一个是正确的? - user801116
@ Ricky - 引用链接资源的答案才是正确的答案。 :) - Quentin
页面开始加载后添加的对象怎么办?例如,假设在head标签中我有一个脚本,它创建了一个带有外部URL(由它计算)的新脚本标记,并将其添加到head中。如果脚本是硬编码的,那么我是否保证该脚本始终会在onload触发之前加载? - Michael

2

onLoad事件在DOM树成功加载完成后触发,例如成功加载body内的所有元素。


0

Onload 在 DOM 完全加载后执行。这意味着它在页面结束后执行。 当您想要在文档完全加载时执行某些任务时,这非常有用。

您可以用许多方法来实现这一点,但以下是几种方法:

<body onload="YOUR ACTION">

类似于

<script type="text/javascript>
window.onload=function(){
   //YOUR ACTION  
}
</script>

1
它不会在文档对象模型(DOM)加载完成后立即触发。它会等待其他一些事情完成(例如图片加载)。 - Quentin

-1

onload事件会在DOM树准备就绪时触发。这意味着页面上的所有元素都可以被脚本访问。Document.onload可能会在页面渲染或图像加载之前触发。


window.onload 事件(您所链接的事件)在图像、框架等加载完成后触发。 - Salman A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接