mirror of
https://github.com/futurepress/epub.js.git
synced 2025-10-03 14:59:18 +02:00
70 lines
No EOL
1.3 KiB
JavaScript
70 lines
No EOL
1.3 KiB
JavaScript
FP.Events = function(obj, el){
|
|
|
|
this.events = {};
|
|
|
|
if(!el){
|
|
this.el = document.createElement('div');
|
|
}else{
|
|
this.el = el;
|
|
}
|
|
|
|
obj.createEvent = this.createEvent;
|
|
obj.tell = this.tell;
|
|
obj.listen = this.listen;
|
|
obj.deafen = this.deafen;
|
|
obj.listenUntil = this.listenUntil;
|
|
|
|
return this;
|
|
}
|
|
|
|
FP.Events.prototype.createEvent = function(evt){
|
|
var e = new CustomEvent(evt);
|
|
this.events[evt] = e;
|
|
return e;
|
|
}
|
|
|
|
FP.Events.prototype.tell = function(evt, msg){
|
|
var e;
|
|
|
|
if(!this.events[evt]){
|
|
console.warn("No event:", evt, "defined yet, creating.");
|
|
e = this.createEvent(evt)
|
|
}else{
|
|
e = this.events[evt];
|
|
}
|
|
|
|
if(msg) e.msg = msg;
|
|
|
|
this.el.dispatchEvent(e);
|
|
|
|
}
|
|
|
|
FP.Events.prototype.listen = function(evt, func, bindto){
|
|
if(!this.events[evt]){
|
|
console.warn("No event:", evt, "defined yet, creating.");
|
|
this.createEvent(evt);
|
|
return;
|
|
}
|
|
|
|
if(bindto){
|
|
this.el.addEventListener(evt, func.bind(bindto), false);
|
|
}else{
|
|
this.el.addEventListener(evt, func, false);
|
|
}
|
|
|
|
}
|
|
|
|
FP.Events.prototype.deafen = function(evt, func){
|
|
this.el.removeEventListener(evt, func, false);
|
|
}
|
|
|
|
FP.Events.prototype.listenUntil = function(OnEvt, OffEvt, func, bindto){
|
|
this.listen(OnEvt, func, bindto);
|
|
|
|
function unlisten(){
|
|
this.deafen(OnEvt, func);
|
|
this.deafen(OffEvt, unlisten);
|
|
}
|
|
|
|
this.listen(OffEvt, unlisten);
|
|
} |