为什么onload事件没有按预期绑定`this`变量?

时间:2011-06-05 23:24:33

标签: javascript web-services web-applications

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

就像在这个测试脚本中一样,onkeydown为我们提供了真实的(this工作正常)但是onload给我们假(this现在指向窗口..是吗?):

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

</body></html>

1 个答案:

答案 0 :(得分:4)

请参阅documentation

  

HTMLBodyElement.onload

     

当窗口获得焦点时,公开window.onload事件处理程序以进行调用。

     

请注意,当事件到达窗口时触发此处理程序,而不是body元素。使用addEventListener()将事件侦听器附加到body元素。

重要的部分是当事件到达窗口时触发此处理程序。处理程序在window而不是body

的上下文中执行

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

相关问题