有谁知道为什么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
。