JavaScript事件术语
事件处理程序和事件侦听器之间有什么区别JavaScript事件术语,javascript,events,Javascript,Events,事件处理程序和事件侦听器之间有什么区别 直到最近,我还认为它们是同一事物的不同名称:一个在事件发生时调用的函数。但我最近读到一篇文章,称事件处理程序为事件侦听器绑定到的DOM元素,这很有意义。在JavaScript上下文中,我倾向于互换使用它们。我认为大多数JavaScript开发人员会认为它们是同一个东西:一个在特定事件发生时被调用的函数。如果将事件的目标DOM节点称为“事件处理程序”,我和其他人都会感到困惑 编辑 “事件侦听器”在上下文中具有特定含义。事件目标(如元素)的addEventLi
直到最近,我还认为它们是同一事物的不同名称:一个在事件发生时调用的函数。但我最近读到一篇文章,称事件处理程序为事件侦听器绑定到的DOM元素,这很有意义。在JavaScript上下文中,我倾向于互换使用它们。我认为大多数JavaScript开发人员会认为它们是同一个东西:一个在特定事件发生时被调用的函数。如果将事件的目标DOM节点称为“事件处理程序”,我和其他人都会感到困惑 编辑 “事件侦听器”在上下文中具有特定含义。事件目标(如元素)的
addEventListener
和removeEventListener
方法的listener
参数属于EventListener
类型,指定为包含单个handleEvent
方法的接口。但是,JavaScript没有接口的概念,在中,它指定:
对象事件侦听器
这是一个ECMAScript函数引用。此方法没有返回值。该参数是一个事件对象
因此,在JavaScript中,事件侦听器显然是在事件发生时调用的函数
“事件处理程序”在中也有提及,在(强调部分)中有提及:
1.3.2。与HTML 4.0事件侦听器的交互
...
为了实现与HTML 4.0的兼容性,实现者可以将表示事件处理程序的属性设置视为在EventTarget上创建和注册EventListener
显然,这两个术语在JavaScript世界中的含义基本相同。非常清楚,语言本身没有事件的概念。这些是DOM的一部分 Event Handler: An asynchronous callback that is invoked when an event is raised. Event Listener: An object that implements an interface and has events "pushed" to it. 然后注册一个侦听器,如下所示:
target.addEventListener(type, listener, useCapture);
以下是以下文件:
侦听器:
当指定事件发生时接收通知的对象
类型发生。这必须是实现EventListener接口的对象,
或者只是一个JavaScript函数。
因此,函数对象似乎隐式实现了EventListener,以便于使用
类比
将事件处理程序视为向邮递员发出指令
我不想等你
我想让你把包裹给我的配偶
这样他们就可以打开它了
将事件侦听器视为等待看医生
我会听着你准备好见我的通知。在那之前,我要读一本杂志
但归根结底,这些仅仅是对
嘿,我要你执行这个代码
资源
@chaospanion-这对我没有帮助,因为您正在使用Java代码示例,我的问题与JavaScript术语有关,但感谢您花时间回答。@Nick-这是针对JavaScript的。DOM文档只是用一般术语描述接口。@chaospanion-Doh!我有点胖,所以你得原谅我。为什么一个“事件处理程序”异步?关于能够将包含
handleEvent
方法的对象传递到addEventListener
中,这一点很好:我完全忘记了这一点。我总是交替使用它们,但我读了一篇关于事件委派的文章,其中一个表捕获了发生在它上面的所有单击事件,并且它们引用了它们作为处理程序添加到表中,然后调用event listener.OK。我认为这是一个不寻常的用途。你有那篇文章的URL吗?没有。我知道这不是很有帮助,但我找不到我在哪里读的,因为那是很久以前的事了。我在一个TODO列表中列出了要问这个问题的人。规范所说的是,诸如onload=“func();”
之类的属性相当于document.getElementById(“id”).addEventListener(“onload”),{handleEvent:function(evt){func()},假)代码>好的,规范的这一部分似乎确实在特别讨论属性,所以这可能并没有真正澄清事件处理程序。但是,EventListener
仍然被指定为ECMAScript中的函数对象,而不是具有handleEvent
方法的对象。请阅读此内容
target.addEventListener(type, listener, useCapture);
listener:
The object that receives a notification when an event of the specified
type occurs. This must be an object implementing the EventListener interface,
or simply a JavaScript function.