Skip to content

Instantly share code, notes, and snippets.

@Ajnasz
Created April 11, 2012 07:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ajnasz/2357705 to your computer and use it in GitHub Desktop.
Save Ajnasz/2357705 to your computer and use it in GitHub Desktop.
var referenceToEventListeners = {},
etid = 0;
function getTargetIdFromTarget(target) {
target = target || document;
var targetId = target.id;
if (!targetId) {
targetId = 'Element' + ++etid;
target.id = targetId;
}
return targetId;
}
function capture (event, handler, target) {
var targetId = getTargetIdFromTarget(target);
if (!referenceToEventListeners[event]) {
referenceToEventListeners[event] = {};
}
if (!referenceToEventListeners[event][targetId]) {
referenceToEventListeners[event][targetId] = {};
}
referenceToEventListeners[event][targetId].push(handler);
}
function dispatch (event, data, target) {
if (referenceToEventListeners[event]) {
var targetId = getTargetIdFromTarget(target), eventArgs;
if (referenceToEventListeners[event][targetId]) {
eventArgs = {
eventName: event,
eventData: data || null
};
referenceToEventListeners[event][targetId].forEach(function (handler) {
handler(eventArgs);
});
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment