我常常看到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又应该是事件对象?
答案 0 :(得分:3)
事件处理程序定义为callback
方法。回调是(因此表达式)稍后从另一个进程调用。这是由事件触发时的环境(本例中的浏览器)完成的。
它会调用您的回调函数并传入event object
。
答案 1 :(得分:1)
事件对象存储在任何事件处理程序的window.event
内部,因此您无需担心处理程序是否符合将其作为参数接受。
在第二个和第三个示例中,e
参数将作为未定义传递,因为该范围中不存在变量e
(除非您有全局e
)。
答案 2 :(得分:0)
这就是所谓的回调方法。该事件最初由操作系统创建,发送到Web浏览器,然后在javascript事件对象中将其传递给您。
答案 3 :(得分:0)
我不确定,但我认为该事件是ActionEvent的对象实例。我不认为可以手动实例化ActionEvent,因此您无法在静态HTML中执行此操作。即使它是可能的,它肯定不是最好的做法。