方法是否被视为事件处理程序?

use*_*452 2 javascript methods jquery

我正在研究javascript和jquery对事件处理程序的正确定义有点困惑.

到目前为止,我已阅读 .on()(例如)技术上是一个method但它正在处理事件.那么会.on()被视为事件处理程序吗?或者它是一个事件监听器,因为它内部的函数是处理程序?

Ori*_*iol 6

不,jQuery on是一种添加事件监听器的方法.它不是事件处理程序,也不添加事件处理程序.

一个事件侦听器是一个函数调用,当某一种事件分派特定元素或其后代之一上.

function eventListener() {
  console.log("I'm an event listener");
}
window.addEventListener('load', eventListener);
Run Code Online (Sandbox Code Playgroud)

一个事件处理程序是某种特殊事件侦听器:

  • 对于每种事件,元素一次只能有一个事件处理程序
  • 它在泡沫阶段调用,而不是捕获阶段.
  • 它可以存储在原始的未编译形式中,在编译时,它将以非常奇怪的范围运行.

function eventHandler() {
  console.log("I'm an event handler");
}
window.onload = eventHandler;
Run Code Online (Sandbox Code Playgroud)

var eventHandler = 'console.log("I\'m a raw uncompiled event handler");';
document.body.setAttribute('onload', eventHandler);
Run Code Online (Sandbox Code Playgroud)

  • 我想你的意思是说"一次只有**一个**事件处理程序".我理解你在"处理程序"和"监听器"之间的区别,但非正式地说这两个单词在某种程度上可以互换使用,而"监听器"确实"处理"一个事件,因为它可以取消它的默认行为,阻止它冒泡,等等(另外,如果jQuery在一个不支持`.addEventListener()`或`.attachEvent()`的非常老的浏览器中运行,那么jQuery不会通过你的定义添加一个事件"handler". (3认同)