jquery中的ready方法和window.onload的区别
区别
- jquery的ready方法在网页中的DOM结构加载完成后执行。window.onload()必须等到网页全部加载完毕(包括图片等)才执行。
- 前者可以执行多次,不会上一次覆盖。后者只能执行一次,如果第二次,那么第一次的执行的会被覆盖。
扩展
关于script元素的async属性和defer属性:
async:
表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。
如果有多个脚本谁先加载完谁先执行,async的加载不计入DOMContentLoaded事件统计。
defer:
表示脚本可以延迟到文档完全被解析和显示之后再执行。文档解析时,遇到了设置了defer的脚本,就会在后台下载,但是并不会阻止文档的渲染,当页面解析渲染完毕后,会等到所有的defer脚本加载完毕并按照顺序执行,指定完毕后会触发DOMContentLoaded事件。
如果有多个设置了defer的script标签存在,则会按照顺序执行所有的script。在文档渲染完毕后,DOMContentLoaded事件调用前执行。
而在上述中的DOMContentLoaded事件就相当于jquery中的ready方法,也就是DOM结构加载完成的事件。