为什么要等window.onload?

时间:2014-09-01 12:33:32

标签: javascript window onload

在javascript中我们需要在运行代码之前等待窗口onload事件?

在不需要等待的情况下可以做些什么有用的事情?

4 个答案:

答案 0 :(得分:3)

  

在javascript中我们需要在运行代码之前等待窗口onload事件?

  • 如果要访问 #document
  • 中的节点
  • 如果您想获取页面高度或宽度等值
  • 如果您想在向 #document 添加新内容时避免竞争条件
  • 基本上, DOM与特定页面相关的所有内容
  

在不需要等待的情况下可以做些什么有用的事情?

  • 计算行动
  • 声明函数,初始化变量
  • 测试功能支持,包括polyfills
  • 基本上,与特定浏览器相关但与页面无关的非DOM相关 DOM

答案 1 :(得分:1)

来自相关的SO帖子:window.onload vs. body.onload vs. document.onready

window.onload等待所有资产完成下载,例如图像和脚本。

还有一个" DOM ready"允许更快访问dom的事件,因为它只能等到你可以通过API访问DOM。

答案 2 :(得分:1)

当您的代码需要访问/修改DOM和所有资产(图像,字体等)时,您需要在运行代码之前使用window onload事件。您也可以使用jQuery(或等效的)&(document).ready()。它比window onload更早发布,因此用户会觉得网站加载速度更快。不同之处在于,在文档就绪时,只有DOM树已准备就绪,但资产可能尚未加载。在窗口加载时,所有内容都已加载。

在文档就绪事件之前,您可能仍会做一些事情。例如,如果您需要为用户创建某种唯一ID并设置cookie,则无需等待DOM。或者,如果你想基于cookie做一些事情(前提是它没有触及DOM)。或者您需要从API加载一些外部数据(但在尝试显示该数据之前需要等待DOM)。一般来说,任何不接触DOM的东西都应该没问题。

答案 3 :(得分:0)

如果你的代码需要执行其他文件(比如库,框架或你自己的文件暴露全局的东西),你应该总是等待浏览器完成下载所有内容。

所以在大多数情况下,你应该这样做。你可以找到不需要这种情况的边缘情况,但这种情况非常罕见,而且人类对时间的感知不会让你付出太多代价。