有谁知道为什么onload事件未按预期绑定this变量?

像在此测试脚本中一样,onkeydown为我们提供true(this正常工作),但onload为我们提供false(this现在指向window .. wth?):

<!DOCTYPE html>
<html><head>
<script>
function f(t){
alert(t===document.body);
}
</script>
</head><body onkeydown="f(this);" onload="f(this);">

</body></html>

最佳答案

请参见documentation


  HTMLBodyElement.onload
  
  公开window.onload事件处理程序,以在窗口获得焦点时调用。
  
  请注意,当事件到达窗口而不是body元素时,将触发此处理程序。使用addEventListener()将事件侦听器附加到body元素。


重要的是,事件到达窗口时将触发此处理程序。处理程序在window而不是body的上下文中执行。

FWIW,alert(window.onload === document.body.onload);将产生true

10-07 19:30
查看更多