【发布时间】:2016-04-18 17:52:41
【问题描述】:
我的问题与这里提出的问题类似,但有点不同,window.onload vs <body onload=""/>
在那个问题中,这是使用 window.onload 和内联 js 之间的比较。
我的问题是以下之间的区别。假设 body 标签的 Id 为“bodyTag”。
document.getElementById("bodyTag").onload = function () {
alert("hi");
}
对
window.onload = function () {
alert("hi");
}
确切地说,这两者之间有什么区别,我什么时候应该使用其中一个而不是另一个?这仅适用于纯 JavaScript。我是否正确假设不同之处在于 window.onload 在加载整个网页、加载所有样式和加载所有 Javascript 代码之后才会启动?在第一个版本(document.getElementById("bodyTag").onload=) 中,它等待整个网页加载(如果它在 head 中声明为外部 CSS 文件,则等待 CSS 样式),但不适用于所有 Javascript装载?有这个区别吗?
【问题讨论】:
-
不同浏览器的行为可能会有所不同。 body.onload 将在 DOM 准备好时触发,这不一定是在其他所有内容加载之后。请参阅此处以获得好的答案:stackoverflow.com/questions/588040/…
-
谢谢!甚至不知道 Document.onload 的存在。所以看来 window.onload 是我最想要的,对吧?至于“DOM 何时准备就绪”,我还不清楚。这只是意味着加载实际网页时,而不是脚本,对吗?并且要确认,总体而言,最佳实践是在处理纯 JavaScript 时使用 window.onload?
-
我不确定在另一个线程中接受的答案是否在 document.onload 上完全正确。 onload 方法侦听 load 事件,该事件仅在节点下的 每个 资源已加载的情况下触发。相反,如果基本 DOM 已到位,则 DomContentLoaded 事件应该已经触发。 developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded(有一小段可以区分这两者)
-
如果你想等待所有资源被加载,使用window.onload。要尽快触发 js,请使用 DomContentLoaded(或 jquerys 就绪方法)
标签: javascript html css