当我尝试在chrome 60中使用chrome 56进行测试时,我有一些应用程序屏幕中断,我可以用这个示例来证明为什么html:
<!DOCTYPE html>
<html>
<head>
<script>
function windowOnload() {
alert("window onload called");
}
function bodyOnload() {
alert("body onload called");
}
window.onload = windowOnload;
</script>
</head>
<body onload="bodyOnload()">
<h1>on load test</h1>
</body>
</html>
在chrome 56中调用windowOnload和bodyOnload,在chrome 60中只调用bodyOnload。我修复了有问题的页面,但正在寻找一些解释为什么更改并且在chrome发行说明中找不到任何内容。
答案 0 :(得分:1)
这似乎是旧版本中的一个错误,已在较新版本中修复。这是bug report。
这在body
元素的HTML规范中指定:
onblur
对象的onerror
,onfocus
,onload
,onresize
,onscroll
和Window
事件处理程序,在body
元素上公开,用通常由HTML元素支持的相同名称替换通用事件处理程序。
因此,当解析<body onload="bodyOnload()">
元素时,它执行相当于:
window.onload = function() {
bodyOnload();
};
替换了Javascript中设置的window.onload
属性。