Javascript:body的onload事件指定的函数调用时会传入什么参数?

7

类似于这个问题,我的HTML代码如下:

<body id="body" onload="loader()">
</body>

我一直认为,正如这篇文档所说的那样,在load事件中不会传递任何参数。然而,我给参数命名并进行了深入检查,发现我得到了一个看起来像这样的对象:

{originalTarget : DOM, 
preventCapture : function, 
target : DOM, 
cancelable : Bool, 
currentTarget : DOM, 
timeStamp : Int, 
bubbles : Bool, 
type : String, 
eventPhase : Int, 
preventDefault : function, 
initEvent : function, 
stopPropagation : function, 
CAPTURING_PHASE : Int, 
AT_TARGET : Int, 
BUBBLING_PHASE : Int, 
explicitOriginalTarget : DOM, 
preventBubble : function,
isTrusted : Bool, 
MOUSEDOWN : Int, 
MOUSEUP : Int, 
MOUSEOVER : Int, 
//... (more constants)
}

有人知道那个东西是什么,或者它的类名是什么吗?

1个回答

9

看起来这是标准的JavaScript DOM Event 对象。它描述了您的函数正在处理的事件的性质。

更新:针对评论讨论:

不同的浏览器以不同的方式提供Event对象:

  • IE从不将其作为参数传递给函数,而是使用window.event属性。
  • Firefox将其作为第一个参数传递。
  • Chrome似乎两者都可以。

我相信任何被任何事件处理程序调用的函数(即不仅限于body.onload)都会将这个对象作为其第一个参数传递。 - Paul D. Waite
@Paul:我认为浏览器实现和事件附加方式之间存在差异(使用传统或高级事件注册模型)。但我可能完全错了(而且此刻太累了,无法查找)。 - Marcel Korpel
1
@Marcel:很不幸,对于年轻程序员来说,首先去查阅规范已经变得很少见了。干得好,侦探 ;) - Sampson
1
不错的更新。我刚发现了这个全面的页面:http://www.quirksmode.org/js/events_properties.html - Marcel Korpel
@Marcel:哦,我明白了。我以为你在谈论事件对象如何传递到由HTML属性定义的事件处理程序,我认为这没有正式的规范。 - Tim Down
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接