0
A
回答
3
在JavaScript中的哪些情况下,我们是否需要在运行代码之前等待窗口onload事件?
- 如果您要访问的节点在#document
- 如果你想要得到的值,如
- 如果你想避免竞争条件附加在页面的高度或宽度新事物的#document
- 基本上,一切DOM相关特定页面
什么有用的事情可以做,而无需等待?
- 计算行动
- 声明功能,初始化变量
- 测试功能的支持,其中包括polyfills
- 基本上,一切非DOM相关,或DOM涉及到具体的浏览器,但不是页面
1
从一个相关的SO帖子:window.onload vs. body.onload vs. document.onready
window.onload会等待,直到所有资产都完成下载,如图像和脚本。
还有一个“DOM ready”事件,允许更快地访问dom,因为它只会等到您可以通过API访问DOM。
0
如果您的代码需要执行其他文件(如库,框架或公开全局的文件),您应该始终等待浏览器完成下载所有内容。
所以在大多数情况下,你应该这样做。你可以找到不需要这种边缘的情况,但这非常罕见,并且在人们对时间的感知中花费不多。
1
当代码需要访问/修改DOM和所有资源(图像,字体等)时,需要在运行代码之前使用window onload事件。您也可以使用jQuery(或同等版本)&(document).ready()
。它比window onload早启动,因此用户会觉得网站加载速度更快。不同之处在于文档准备好只有DOM树已准备好,但资产可能尚未加载。在窗口onload上,一切已经加载。
在文档准备好之前,您可能还会做一些事情。例如,如果您需要为用户创建某种唯一的ID并设置cookie,则无需等待DOM。或者如果你想基于cookie做一些事情(只要它不接触DOM)。或者您需要从API加载一些外部数据(但您需要等待DOM才能显示该数据)。一般来说,任何不接触DOM的东西都可以。
相关问题
- 1. 为什么我需要等待协程?
- 2. 为什么要等待退出?
- 3. JS异步/等待 - 为什么等待需要异步?
- 4. 程序为什么要等待schedule()完成,但不等待scheduleWithFixedDelay()?
- 5. 为什么不等待?
- 6. SQLPLus等待...为什么?
- 7. 为什么等待块Dispatcher.Invoke?
- 8. 为什么WaitForExit()不等待?
- 9. Javascript window.onload不等待DOM加载
- 10. 什么是等待?
- 11. 为什么在等待后HttpContext.Current为null?
- 12. 为什么要等待异步Web服务调用
- 13. 为什么pclose(3)不要等待shell命令终止
- 14. 为什么要在方法中间等待异步方法?
- 15. 为什么要等待线程延迟更新摆动组件?
- 16. 为什么要使用异步并等待Task <>?
- 17. 为什么要等待DIFS以检测信道是否空闲
- 18. window.onload = init();有什么不同?和window.onload = init;
- 19. 为什么我的TCS不等待?
- 20. 为什么在里面等待同步?
- 21. 为什么主线程会等待
- 22. 为什么condition_variable无限期地等待
- 23. 为什么页面不停地等待?
- 24. 为什么Process.WaitForExit不会等待?
- 25. 为什么async等待抛出NullReferenceException?
- 26. 为什么ajax等待一秒钟?
- 27. 为什么没有未来::等待()块
- 28. 为什么asyncio.wait不会等待FIRST_COMPLETED
- 29. 为什么这些rspec测试“等待”?
- 30. 什么是等待setSoTimeout
你的意思是不是'DOMReady',或者一般? – 2014-09-01 12:36:49
如果你的脚本是BEFORE HTML,那么你必须等待它加载(否则你会尝试访问不存在的东西)。如果它是在标记之后,那么你可能需要仅等待异步上下文(比如图像),因为它们会参与布局。最后,DOM已经准备就绪并且只有在它已经被解析时才可用(但是当它已经准备就绪时,你可以在onload之前使用它)。 – 2014-09-01 12:38:11
@FrédéricHamidi - 我的意思是一般 – 2014-09-01 12:39:42