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上阅读.
这些属性对应于HTML'on'事件属性.
与相应的属性不同,这些属性的值是函数(或实现EventListener接口的任何其他对象)而不是字符串.实际上,在HTML中分配事件属性会在指定代码周围创建一个包装函数.例如,给定以下HTML:
Run Code Online (Sandbox Code Playgroud)<div onclick="foo();">click me!</div>如果
element是对此的引用div,则值element.onclick有效:Run Code Online (Sandbox Code Playgroud)function onclick(event) { foo(); }请注意事件对象如何作为参数传递
event给此包装函数.
设置事件属性后,将创建一个隐式函数event作为第一个参数。事件触发时,事件对象将传递给该函数。直到HTML 5(仍是草案)才对这种行为做出明确的定义,但是在主要的浏览器中已经有很长的一段时间了,这就是它成为规范的方式:
调用事件处理程序的Function对象时,
call()必须使用一个参数(设置为相关事件的对象)来调用其回调Event。
event出于明显的原因,该论点得名。 http://www.w3.org/TR/html5/webappapis.html#events