哪个更受支持:window.onload还是document.onload?
当前回答
简言之
IE 6-8不支持window.onload任何现代浏览器都不支持document.onload(从不触发事件)
window.onload=()=>console.log('window.onlload-works');//解雇document.onload=()=>console.log(“document.onlload-works”);//未点火
其他回答
他们什么时候开火?
窗口.卸载
默认情况下,当加载整个页面时,包括其内容(图像、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。
window.onload和onunload是document.body.onload和document.body_onload的快捷方式
所有html标记上的document.onload和onload处理程序似乎是保留的,但从未触发
文档中的“onload”->true
添加事件侦听器
<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.
在Chrome中,window.onload与<body onload=“”>不同,而在Firefox(35.0版)和IE(11版)中它们都是相同的。
您可以通过以下代码段来探索:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--import css here-->
<!--import js scripts here-->
<script language="javascript">
function bodyOnloadHandler() {
console.log("body onload");
}
window.onload = function(e) {
console.log("window loaded");
};
</script>
</head>
<body onload="bodyOnloadHandler()">
Page contents go here.
</body>
</html>
您将在Chrome控制台中看到“窗口加载”(这是第一个)和“主体加载”。然而,你会在Firefox和IE中看到“body onload”。如果你在IE&FF的控制台中运行“window.onload.toString()”,你会看到:
“函数onload(event){bodyOnloadHandler()}”
这意味着赋值“window.onload=函数(e)…”被覆盖。