如何在Javascript中创建自定义事件类?

Jos*_*sen 28 javascript events event-handling javascript-events actionscript-3

如何创建类似于ActionScript的自定义事件类?我的意思是,我可以使用一个类来发起我自己的事件,发送必要的数据.

我不想使用像YUI或jQuery这样的第三方库来实现它.我的目标是能够发送看起来像这样的事件.

document.addEventListener("customEvent", eventHandler, false);

function eventHandler(e){
    alert(e.para1);
}

document.dispatchEvent(new CustomEvent("customEvent", para1, para2));
Run Code Online (Sandbox Code Playgroud)

请不要第三方库解决方案.

小智 26

对我有用的方法是调用document.createEvent(),初始化它并使用window.dispatchEvent()调度它.

  var event = document.createEvent("Event");
  event.initEvent("customEvent", true, true);
  event.customData = getYourCustomData();
  window.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

  • 根据[Mozilla MDN](https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Events/Creating_and_triggering_events)对此进行了删除 (6认同)
  • 这是否支持所有A浏览器,包括像IE6这样的旧浏览器? (2认同)

小智 5

我在这里参加派对有点晚了,但是他正在寻找同样的事情.我并不热衷于第一个答案(上图),因为它依赖于文档来管理自定义事件.这很危险,因为它是全局的,如果该脚本巧合地依赖于同一个自定义事件,则可能与另一个脚本发生冲突.

我发现的最佳解决方案是: Nicholas C. Zakas - Javascript中的自定义事件

不幸的是,由于javascript不支持继承关键字,因此原型设计有点混乱,但它确实使事情保持整洁.