📜  JavaScript 自定义事件

📅  最后修改于: 2022-05-13 01:56:42.420000             🧑  作者: Mango

JavaScript 自定义事件

几乎每个 Web 应用程序都使用事件,例如当用户单击某物时, onclick 事件用于执行某些代码。已经有许多内置事件可供使用,但如果我们想要自己的自定义事件怎么办?假设我们正在创建一个聊天应用程序,并且我们希望在最终用户发送一些消息时执行一些代码。没有内置事件可以检测到这一点。这里我们需要一个可以处理这种自定义场景的自定义事件。

创建自定义事件:要创建自定义事件,我们使用Event构造函数或CustomEvent接口。 Event 构造函数创建一个 Event,而 CustomEvent 创建一个具有更多功能的 Event。

为了使用新的Event创建一个,请遵循以下步骤。

  • 我们使用 Event 构造函数创建一个事件。
  • 我们使用addEventListener()方法监听这个事件。
  • 我们使用element.dispatchEvent(eventName)方法触发或调度事件。
  • 现在已经创建了一个名为start的自定义事件。

句法:

// To assign event
const startEvent = new Event("start");

// To trigger the event Listener
document.addEventListener("start", () => {
    console.log("The start event was triggered")
});

// To trigger the Event
document.dispatchEvent(startEvent);

示例:在此示例中,我们正在创建一个在x的值为 5 时触发的事件。

HTML


  



HTML
 

  



输出:

"Start event triggered"

使用 CustomEvent 创建自定义事件:使用 CustomEvent 接口创建自定义事件有一个优势,因为它可以发送自定义数据。按照以下步骤创建新的 CustomEvent。

  • 我们使用 CustomEvent 构造函数创建自定义事件。
  • 这需要两个参数,第一个是事件的名称,第二个是包含数据的对象。对象名称中的属性名称应命名为detail否则将不起作用。
  • 我们为此事件创建一个监听器。
  • 我们触发或调度事件。
  • 已创建包含数据的自定义事件。

句法:

// To assign event
const event = new CustomEvent("start", {
      detail: {
        platform : "GeeksforGeeks"
      }
});

// To trigger the event Listener
document.addEventListener('start', (e)=>{
      console.log(
        `start event triggered on platform :
        ${e.detail.platform}`
        );
});

// To trigger the Event
document.dispatchEvent(event);

示例 2:在此示例中,我们正在创建一个自定义事件,该事件在x的值为 5 时触发。

HTML

 

  


输出:

Start event triggered on platform GeeksforGeeks

注意:我们使用document.dispatchEvent('start')直接从文档调度事件, 但是可以从任何需要的元素(例如myBtn.dispatchEvent('start') )分派事件。