mirror of
https://github.com/piskelapp/piskel.git
synced 2023-08-10 21:12:52 +03:00
48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
(function () {
|
|
var ns = $.namespace('pskl.utils');
|
|
|
|
ns.Event = {};
|
|
|
|
ns.Event.addEventListener = function (el, type, callback, scope, args) {
|
|
if (typeof el === 'string') {
|
|
el = document.querySelector(el);
|
|
}
|
|
|
|
var listener = {
|
|
el : el,
|
|
type : type,
|
|
callback : callback,
|
|
handler : args ? callback.bind(scope, args) : callback.bind(scope)
|
|
};
|
|
|
|
scope.__pskl_listeners = scope.__pskl_listeners || [];
|
|
scope.__pskl_listeners.push(listener);
|
|
el.addEventListener(type, listener.handler);
|
|
};
|
|
|
|
ns.Event.removeEventListener = function (el, type, callback, scope) {
|
|
if (scope && scope.__pskl_listeners) {
|
|
var listeners = scope.__pskl_listeners;
|
|
for (var i = 0 ; i < listeners.length ; i++) {
|
|
var listener = listeners[i];
|
|
if (listener.callback === callback && listener.el === el && listener.type === type) {
|
|
el.removeEventListener(type, listeners[i].handler);
|
|
listeners.splice(i, 1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
ns.Event.removeAllEventListeners = function (scope) {
|
|
if (scope && scope.__pskl_listeners) {
|
|
var listeners = scope.__pskl_listeners;
|
|
for (var i = 0 ; i < listeners.length ; i++) {
|
|
var listener = listeners[i];
|
|
listener.el.removeEventListener(listener.type, listener.handler);
|
|
}
|
|
scope.__pskl_listeners = [];
|
|
}
|
|
};
|
|
})();
|