fix(jqLite): fix memory leaking in IE8 (remove monkey patched methods on Event)

These methods cause IE8 holds the whole jqLite in the memory, even when page is reloaded.
jqLite's cache keeps element's data (event handlers, attached scopes, injector, etc…), so almost all used memory is never released in IE8.

jQuery creates its own Event object (wrapper around native Event) instead.
This commit is contained in:
Vojta Jina 2012-02-05 00:09:02 -08:00
parent 6c4f1391bc
commit 3173d8603d

View file

@ -514,6 +514,13 @@ forEach({
forEach(eventHandler.fns, function(fn){
fn.call(element, event);
});
// Remove monkey-patched methods (IE),
// as they would cause memory leaks in IE8.
// It shouldn't affect normal browsers, as their native methods are defined on prototype.
delete event.preventDefault
delete event.stopPropagation
delete event.isDefaultPrevented
};
eventHandler.fns = [];
addEventListenerFn(element, type, eventHandler);