chrome 56和chrome 60之间的onload行为差异问题

时间:2017-08-02 21:52:14

标签: javascript google-chrome

当我尝试在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发行说明中找不到任何内容。

1 个答案:

答案 0 :(得分:1)

这似乎是旧版本中的一个错误,已在较新版本中修复。这是bug report

这在body元素的HTML规范中指定:

  

onblur对象的onerroronfocusonloadonresizeonscrollWindow事件处理程序,在body元素上公开,用通常由HTML元素支持的相同名称替换通用事件处理程序。

因此,当解析<body onload="bodyOnload()">元素时,它执行相当于:

window.onload = function() {
    bodyOnload();
};

替换了Javascript中设置的window.onload属性。