We've talked about doing this before, but there are a couple problems.

First, we can't do what you're suggesting for Element#remove — the  
function returns the removed element, which may then be appended  
somewhere else in the document. If the element is going to be  
discarded, then one ought to remove its listeners; but if it will be  
reused, the user would expect those listeners to remain. I'm not sure  
how to get around this.

We have also talked about removing event listeners on an  
Element#update call, but are hesitant to do so automatically for  
performance reasons. But we may yet implement this.

Thanks!
Andrew

On Sep 30, 2009, at 6:26 AM, kef wrote:

>
> Hello,
>
> I am currently working on an AJAX application (prototype 1.6.1). As
> usual, it runs very well on Chrome and Firefox but we encounter
> difficulties, particularly with Internet Explorer 6.
>
> After much research, it appears that the problem is related to the
> "memory leak". In fact, i reload only some parts of page. (I keep
> always the header and footer) so a large part of the memory used is
> never released.
>
> I found a solution partially responsive to my needs but it involves
> changing the core prototype. Prior to Ajax call, I clean all events on
> elements will be replaced (like _destroyCache during the unload of
> window).
>
> There may be a cleaner solution but I have not found.
>
> My changes here:
>   remove: function (element) (
>     / / Begin Fix
>     if (element = $ (element))
>         element.stopObserving (false, true);
>     / / End Fix
>     element.parentNode.removeChild (element);
>     return element;
>   )
>
>   stopObserving function (element, eventName, handler) (
>     element = $ (element);
>
>     / / Begin Fix
>     if (handler === true) (
>         for (var i = 0, length = CACHE.length; i <length; i + +)
>             if (CACHE [i]. descendantOf
>                  CACHE & & [i]. DescendantOf (element)) (
>                 Event.stopObserving (CACHE [i], eventName);
>                 CACHE [i] = undefined;
>             )
>         CACHE = CACHE.reject (Object.isUndefined);
>     )
>     / / End Fix
>     ....
> )
>
> In view of the evolution of AJAX and implementation of Internet
> Explorer browsers, I think it may be advisable to incorporate a
> equivalent system in core of prototype.
>
> Regards, Franck
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype: Core" group.
To post to this group, send email to prototype-core@googlegroups.com
To unsubscribe from this group, send email to 
prototype-core-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to