【问题标题】:Why does window.onload work while document.onload doesn't?为什么 window.onload 有效而 document.onload 无效?
【发布时间】:2011-07-05 08:56:02
【问题描述】:

谁能告诉我为什么以下页面在加载时没有触发警报?如果我使用 window.onload 而不是 document.onload 它可以工作。为什么会有这种差异?

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">

document.onload = function() {
    alert('Test');
}

</script>
</head>
<body>
</body>
</html>

【问题讨论】:

标签: javascript


【解决方案1】:

最简单的答案是它不是这样设计的。浏览器在“end of the document loading process”处执行附加到window.onload 的函数。它不会尝试执行附加到document.onload 的函数。

可以document.onload 分配一个函数,但浏览器不会对它做任何特别的事情。

需要记住的一些事项(假设您刚刚将一个函数分配给window.onloaddocument.onload 中的一个):

  1. window.onload === onload
  2. window.onload !== document.onload
  3. window !== document

【讨论】:

  • 所以这是正确的思考方式:文档对象确实有一个onload方法......但在加载页面的过程中绝不是这样方法调用...但是,另一方面,在加载页面后,窗口的 onload 方法被调用...我是 javascript 新手并试图弄清楚如何概念化事物
  • @zjmiller - 对,您可以document.onload 分配一个函数,但浏览器不会对该函数执行任何特殊操作。诀窍是分配给window.onload 会触发特殊行为。 windowonload 属性恰好是浏览器在文档加载后查找要调用的函数的位置。
  • 那么在window 以外的其他元素上拥有onload 属性有什么意义呢? :q
【解决方案2】:

事件处理程序是onload 而不是document.onload。它直接挂在window 对象(这是默认对象)上。

【讨论】:

  • 文档对象没有onload方法吗?
猜你喜欢
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 2020-03-09
  • 2012-01-15
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多