event-target-shim
An implementation of W3C EventTarget interface, plus few extensions.
- This provides
EventTarget
constructor that can inherit for your custom object. - This provides an utility that defines properties of attribute listeners (e.g.
obj.onclick
).
Installation
npm install event-target-shim
Usage
Basic
const EventTarget = require("event-target-shim");
class Foo extends EventTarget {
}
let foo = new Foo();
foo.addEventListener("foo", event => {
console.log(event.hello);
});
foo.addEventListener("foo", event => {
if (event.hello !== "hello") {
event.preventDefault();
}
});
let event = document.createEvent("CustomEvent");
event.initCustomEvent("foo", false, false, null);
event.hello = "hello";
foo.dispatchEvent(event);
foo.dispatchEvent({type: "foo", hello: "hello"});
if (!foo.dispatchEvent({type: "foo", cancelable: true, hello: "hey"})) {
console.log("defaultPrevented");
}
The Extension for Attribute Listeners
const EventTarget = require("event-target-shim");
class Foo extends EventTarget("message", "error") {
}
let foo = new Foo();
foo.onmessage = event => {
console.log(event.data);
};
foo.onerror = event => {
console.log(event.message);
};
foo.addEventListener("message", event => {
console.log(event.data);
});
foo.dispatchEvent({type: "message", data: "hello"});
foo.dispatchEvent({type: "error", message: "an error"});
API
declare class EventTarget {
constructor();
addEventListener(type: string, listener?: (event: Event) => void, capture: boolean = false): void;
removeEventListener(type: string, listener?: (event: Event) => void, capture: boolean = false): void;
dispatchEvent(event: Event | {type: string, babbles?: boolean, cancelable?: boolean}): void;
}
declare function EventTarget(...types: string[]): EventTarget;
If window.EventTarget
exists, EventTarget
is inherit from window.EventTarget
.
So,
const EventTarget = require("event-target-shim");
class Foo extends EventTarget {
}
let foo = new Foo();
if (foo instanceof window.EventTarget) {
console.log("yay!");
}