【问题标题】:How did many libraries make their own event listener and their own events, like in the leaflet library?许多库是如何制作自己的事件侦听器和自己的事件的,就像在传单库中一样?
【发布时间】:2021-07-10 07:17:04
【问题描述】:

在许多库中,例如leaflet,它们有自己的事件,例如“调整大小”或“缩放”事件,您可以在here 看到它们,它们也有自己的事件对象,具有自定义属性,而这些事件对象不具备 DOM 事件的属性,如气泡、cancelBubble 等。它们使用 on() 方法来监听这些事件。

我想知道,他们是如何做到这一点的,他们是如何创建自己的事件、事件对象和自己的事件监听器的,我听说过一种叫做“事件发射器”的东西,但它是 nodejs 的一部分,它只能工作在浏览器之外,所以我想知道它们是如何让它们在浏览器中工作的。

我猜他们创建了自己的事件发射器并在他们的库中使用它们,因为在互联网上有许多手工构建的事件发射器可以在浏览器中工作(我不确定这是不是真的),所以我猜仍然可以在浏览器中使用类似于“事件发射器”的东西。

那么真相是什么?他们是如何像在浏览器中使用 Event Emitter 一样制作这些事件和事件侦听器的。非常感谢您阅读这个问题,我不确定这是不是一个好问题,但希望我能从你们那里得到答案,非常感谢!

【问题讨论】:

标签: javascript leaflet eventemitter


【解决方案1】:

您可以将自己的 custom events 作为 DOM API 的一部分发送。

// add an appropriate event listener
obj.addEventListener("cat", function(e) { process(e.detail) });

// create and dispatch the event
var event = new CustomEvent("cat", {
  detail: {
    hazcheeseburger: true
  }
});
obj.dispatchEvent(event);

【讨论】:

    猜你喜欢
    • 2018-06-28
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 2012-10-04
    • 2015-01-09
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多