哪个更受支持:window.onload还是document.onload?
当前回答
他们什么时候开火?
窗口.卸载
默认情况下,当加载整个页面时,包括其内容(图像、CSS、脚本等),它将被激发。
在某些浏览器中,它现在取代了document.onload的角色,并在DOM就绪时启动。
文档.卸载
当DOM准备就绪时调用,可以在加载图像和其他外部内容之前调用。
他们的支持程度如何?
window.onload似乎是最受支持的。事实上,在某种意义上,一些最现代的浏览器已经用window.onload取代了document.onload。
浏览器支持问题很可能是许多人开始使用jQuery等库来处理文档就绪检查的原因,如下所示:
$(document).ready(function() { /* code here */ });
$(function() { /* code here */ });
为了历史的目的。window.onload与body.nload:
有一段时间,在编写论坛时也提出了类似的问题返回关于window.onload在body.onload上的用法结果似乎是您应该使用window.onload,因为它是很好地将你的结构与动作分开。
其他回答
然而,它们通常是相同的。类似地,body.onload在IE中变为window.onload。
根据解析HTML文档-结束,
浏览器解析HTML源代码并运行延迟脚本。当所有HTML都已解析并运行时,将在文档中发送DOMContentLoaded。事件将弹出窗口。浏览器加载延迟加载事件的资源(如图像)。在窗口处调度加载事件。
因此,执行顺序为
DOMContentLoaded捕获阶段窗口的事件侦听器DOMContentLoaded文档的事件侦听器DOMContentLoaded处于气泡阶段的窗口的事件侦听器加载窗口的事件侦听器(包括onload事件处理程序)
绝不应调用文档中的气泡加载事件侦听器(包括onload事件处理程序)。只能调用捕获加载侦听器,但这是由于子资源(如样式表)的加载,而不是由于文档本身的加载。
window.addEventListener('DOMContentLoaded',函数(){console.log('窗口-DOMContentLoaded-捕获');//第一},true);document.addEventListener('DOMContentLoaded',函数(){console.log('文档-DOMContentLoaded-捕获');//第二},true);document.addEventListener('DOMContentLoaded',函数(){console.log('文档-DOMContentLoaded-气泡');//第二});window.addEventListener('DOMContentLoaded',函数(){console.log('窗口-DOMContentLoaded-气泡');//第三});window.addEventListener('load',函数(){console.log('窗口-加载-捕获');//第四},true);document.addEventListener('load',函数(e){/*筛选出与文档无关的加载事件*/if([style','script'].indexOf(e.target.tagName.toLowerCase())<0)console.log('文档-加载-捕获');//不会发生},true);document.addEventListener('load',function(){console.log('文档-加载-气泡');//不会发生});window.addEventListener('load',函数(){console.log('窗口-加载-气泡');//第四});window.onload=函数(){console.log('窗口-加载');//第四};document.onload=函数(){console.log('文档-加载');//不会发生};
简言之
IE 6-8不支持window.onload任何现代浏览器都不支持document.onload(从不触发事件)
window.onload=()=>console.log('window.onlload-works');//解雇document.onload=()=>console.log(“document.onlload-works”);//未点火
添加事件侦听器
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function(event) {
/*
- Code to execute when only the HTML document is loaded.
- This doesn't wait for stylesheets,
images, and subframes to finish loading.
*/
});
</script>
2017年3月更新
1香草JavaScript
window.addEventListener('load', function() {
console.log('All assets are loaded')
})
2 jQuery
$(window).on('load', function() {
console.log('All assets are loaded')
})
Good Luck.
window.onload和onunload是document.body.onload和document.body_onload的快捷方式
所有html标记上的document.onload和onload处理程序似乎是保留的,但从未触发
文档中的“onload”->true
推荐文章
- 截断字符串直接JavaScript
- 我如何使用可选的链接与数组和函数?
- EINVRES请求https://bower.herokuapp.com/packages/失败,提示502
- 使用fetch进行基本身份验证?
- 如何从子组件内部更新React上下文?
- 如何将一个普通对象转换为ES6映射?
- scrollIntoView卷轴太远了
- Angular ng-repeat反过来
- 如何获得请求路径与表达请求对象
- 使用Handlebars 'each'循环访问父对象的属性
- 盎格鲁- ngcloak / ngg展示blink元素
- 禁用表单自动提交按钮单击
- 节点和错误:EMFILE,打开的文件太多
- JavaScript函数中的默认参数值
- 使用RegExp.exec从字符串中提取所有匹配项