js中的事件关键字

Dan*_*Dan 14 javascript events

我发现这个代码在chrome,ff和ie中出现问题.但是,我找不到任何关于网络中"magic" event关键字的引用.看到这个

<html>
<head>
<script type="text/javascript">
function handler(e)
{
alert(e);
}
</script>
</head>
<body>

<h1 onclick="handler(event);alert(0)">Click on this text</h1>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果我将event括号更改为其他内容,此脚本将工作.这是一个弃用的关键字吗?

Fel*_*ing 19

Event对象自动传递给所有事件处理程序.如果添加事件处理程序addEventListener,则可以选择参数名称(就像您所做的那样handler).但是对于附加了该onclick属性的代码,您只能通过隐式变量访问事件对象event.

如果您想了解更多关于事件处理的信息,我建议您在quirksmode.org上阅读.

另请参阅MDC - 事件处理程序:

这些属性对应于HTML'on'事件属性.

与相应的属性不同,这些属性的值是函数(或实现EventListener接口的任何其他对象)而不是字符串.实际上,在HTML中分配事件属性会在指定代码周围创建一个包装函数.例如,给定以下HTML:

<div onclick="foo();">click me!</div>
Run Code Online (Sandbox Code Playgroud)

如果element是对此的引用div,则值element.onclick有效:

function onclick(event) {
   foo();
}
Run Code Online (Sandbox Code Playgroud)

请注意事件对象如何作为参数传递event给此包装函数.


And*_*y E 5

设置事件属性后,将创建一个隐式函数event作为第一个参数。事件触发时,事件对象将传递给该函数。直到HTML 5(仍是草案)才对这种行为做出明确的定义,但是在主要的浏览器中已经有很长的一段时间了,这就是它成为规范的方式:

调用事件处理程序的Function对象时,call()必须使用一个参数(设置为相关事件的对象)来调用其回调Event

event出于明显的原因,该论点得名。 http://www.w3.org/TR/html5/webappapis.html#events