'event'参数在javascript事件处理程序中的位置是什么?

时间:2012-03-29 13:05:06

标签: javascript events function parameters handler

我常常看到javascript代码,其中动态分配事件处理程序(如onmousemove)。 例如:

document.getElementById('foo').onmousemove = function(e)
{ /* do some stuff with event e */ }

显然这个'e'参数是某种事件对象。它来自何处,例如:调用函数时,谁或什么定义了'e'参数是什么,我也可以在静态html中执行此操作吗? 我的意思是这样的:

<div id='foo' onmousemove='Bla(e)'> ... </div>

我应该填写“e”以获得同样的事件?我还能将它与更多参数结合起来,比如

<div id='foo' onmousemove='Bla(this,e,4)'> ... </div>

其中e又应该是事件对象?

4 个答案:

答案 0 :(得分:3)

事件处理程序定义为callback方法。回调是(因此表达式)稍后从另一个进程调用。这是由事件触发时的环境(本例中的浏览器)完成的。

它会调用您的回调函数并传入event object

答案 1 :(得分:1)

事件对象存储在任何事件处理程序的window.event内部,因此您无需担心处理程序是否符合将其作为参数接受。

在第二个和第三个示例中,e参数将作为未定义传递,因为该范围中不存在变量e(除非您有全局e)。

答案 2 :(得分:0)

这就是所谓的回调方法。该事件最初由操作系统创建,发送到Web浏览器,然后在javascript事件对象中将其传递给您。

答案 3 :(得分:0)

我不确定,但我认为该事件是ActionEvent的对象实例。我不认为可以手动实例化ActionEvent,因此您无法在静态HTML中执行此操作。即使它是可能的,它肯定不是最好的做法。