有谁知道为什么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>
答案 0 :(得分:4)
请参阅documentation:
HTMLBodyElement.onload
当窗口获得焦点时,公开window.onload事件处理程序以进行调用。
请注意,当事件到达窗口时触发此处理程序,而不是body元素。使用
addEventListener()
将事件侦听器附加到body元素。
重要的部分是当事件到达窗口时触发此处理程序。处理程序在window
而不是body
。
FWIW,alert(window.onload === document.body.onload);
将产生true
。