ever
dom events
with a node-style
EventEmitter
api
example
view the demo
var ever = require('ever');
var box = document.querySelector('#box');
var state = false;
ever(box).on('click', function (ev) {
ev.stopPropagation();
state = !state;
box.style['background-color'] = state ? 'red' : 'rgb(127,127,127)';
});
setInterval(function () {
ever(box).emit('click');
}, 3000);
methods
var ever = require('ever')
var ev = ever(element)
Return a new
EventEmitter
that wraps the HTML node element
.
All the usual
EventEmitter
methods should work with the caveat that adding and removing listeners are
proxied through to the underlying dom methods, which only expect a single event
object as a parameter.
ev.emit(name, opts)
Emit an event name
with options opts
. This method creates a synthetic event
using document.createEvent()
and the corresponding variant of .initEvent()
that works with the event name
provided.
The options opts
will be passed into the matching .initEvent()
function
signature. Any additional properties will be added to the event object as
properties being calling .dispatchEvent()
.
The signatures are documented in the file init.json
in this distribution.
To see which event name maps to which init signature, see the types.json
file.
ev.on(name, cb), ev.addListener(name, cb)
Just like node's EventEmitter.prototype.on()
, listen for events.
Internally this calls .addEventListener()
.
ev.removeListener(name, cb)
Just like node's EventEmitter.prototype.removeListener()
, remove a listener.
Internally this calls .removeEventListener()
, however there is no way to
obtain a list of all listeners from dom nodes, so only listeners registered by
the current ever()
instance can be removed.
ev.removeAllListeners(name)
Just like node EventEmitter.prototype.removeAllListeners()
, remove all the
listeners with name
or everything is name
is falsy.
Unlike in node, this function calls removeListener()
on each of the events to
remove them so that the underlying .removeEventListener()
calls get fired.
install
With npm do:
npm install ever
This module is meant for use in browsers with a node-style module system.
Use browserify or similar.
license
MIT