关于window.onload的问题

想请问一下哪些内容应该放在window.onload里面,我看有好多都是把全部的js代码都放在里面,这样在里面写函数那不是会创建很多闭包,而闭包会影响性能。
还有就是如果我的script标签放在body结束标签的前面,这样还需要window.onload吗。

阅读 4.5k
3 个回答

window.onload是在在文档装载完成后会触发。此时,在文档中的所有对象都在DOM中,所有图片,脚本,链接以及子框都完成了装载。
如果script标签放在body结束位置时,这时执行的文档dom已经装载完(不包括所有图片,脚本,链接),可以不用写window.onload。

关于性能:
我觉得因为这样才出现了模块化,CommonJS同步加载(nodejs),AMD依赖关系前置,CMD按需加载,这些都是管理js代码的方法,减少影响的有效途径.

关于</body>前的<script></script>
个人见解:
window.onload事件明确规定了事件在页面上所有的DOM、样式表、脚本、图片和flash都已经加载完成了之后.

而当我们把script标签放在body结束标签前的时候,我们并不能和window.onload事件一样保证加载的完成度(图片),仅仅表示DOM解析完毕,并不代表着资源完美呈现.

关于详细的方面可以自己去搜索下资料,深入了解下window.onload和DOMContentLoaded事件还有浏览器解析步骤

首先要区别window.onloaddomready
window.onload是页面所有资源加载完成后才会执行。
domready仅仅是dom元素加载完成后执行。
所以一般来说,window.onload会在domready后面执行,因为页面一般避免不了图片和其他资源下载。
个人一般直接把js写在body最下面,因为那个时候已经是dom加载完成了,所以本人一般不用window.onloaddomready
如果要用的话,建议使用domeady或则jquery$(function(){ ... })

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题