Fix event leak in nicEdit

master
vitalif 2012-10-09 21:45:08 +00:00 committed by Vitaliy Filippov
parent 76c039d86e
commit 5fa03aebf9
1 changed files with 20 additions and 0 deletions

View File

@ -48,6 +48,11 @@ var bkElement = bkClass.extend({
return this;
},
removeAllEvents : function() {
bkLib.removeAllEvents(this);
return this;
},
setContent : function(c) {
this.innerHTML = c;
return this;
@ -144,9 +149,23 @@ var bkLib = {
isMSIE : (navigator.appVersion.indexOf("MSIE") != -1),
addEvent : function(obj, type, fn) {
obj._bkE = obj._bkE||[];
obj._bkE.push([type, fn]);
(obj.addEventListener) ? obj.addEventListener( type, fn, false ) : obj.attachEvent("on"+type, fn);
},
removeEvent : function(obj, type, fn) {
(obj.removeEventListener) ? obj.removeEventListener( type, fn, false ) : obj.detachEvent("on"+type, fn);
},
removeAllEvents : function(obj) {
if (!obj._bkE) return;
for (var i = 0; i < obj._bkE.length; i++) {
bkLib.removeEvent(obj,obj._bkE[i][0],obj._bkE[i][1]);
}
obj._bkE = [];
},
toArray : function(iterable) {
var length = iterable.length, results = new Array(length);
while (length--) { results[length] = iterable[length] };
@ -465,6 +484,7 @@ var nicEditorInstance = bkClass.extend({
this.e.setStyle({'display' : 'block'});
this.ne.removePanel();
}
this.elm.removeAllEvents();
this.disable();
this.ne.fireEvent('remove',this);
},