hi meatball, i think you should detect exactly whre it is before sending it to the list. Dont get me wrong but, most of the people dont have time to play with other peoples code and try to discover where the memory leak is.
Try to be more specific. And why are you saying theres a memory leak? what tool did you use to detect? When it happens? Do you have a link for it? Fábio Miranda Costa Solucione Sistemas Front-End Engineer http://meiocodigo.com On Sun, Jul 19, 2009 at 12:16 PM, Alexander <[email protected]> wrote: > Well, can't reproduce this without a page were the script is included. > > Alex > > On 18 Jul., 16:50, meatball <[email protected]> wrote: > > Runs on v1.2 and above but has a memory leak that I can't find. > > > > var Comments = new Class({ > > > > id: 0, > > page: 0, > > object: null, > > name: null, > > parentid: 0, > > folder: './', > > > > initialize: function(id, object, name, folder){ > > // Setup > > this.id = id; > > this.object = object; > > this.name = name; > > this.folder = folder; > > // Get the comments for this page > > this.getComments(this.page); > > }, > > > > flag: function(id) { > > var req = new Request({ > > method: 'get', > > url: this.folder + 'backend.php', > > onSuccess: function(text, xml) { > > } > > }).send('do=flag&id=' + id + this.cacheDefeat()); > > }, > > > > openFlagged: function(obj, id) { > > var obj = obj; > > var req = new Request({ > > method: 'get', > > url: this.folder + 'backend.php', > > onSuccess: function(text, xml) { > > new Element('div', {'html': > text}).inject(obj, 'after'); > > obj.destroy(); > > } > > }).send('do=getcomment&post=' + id + '&id=' + this.id + > > this.cacheDefeat()); > > }, > > > > cacheDefeat: function() { > > var myDate = new Date(); > > return '&r=' + myDate.getTime(); > > }, > > > > checkTitle: function() { > > var form = $(this.name + > 'form').getChildren('div')[0].getChildren > > ('form')[0].each(function (ele) { > > if (ele.name == 'title' && ele.value == 'Title > Here') { > > ele.set('value', ''); > > } > > }); > > }, > > > > clearText: function(object) { > > if (object.name == 'title' || object.name == 'message') > { > > if (object.value == 'Title Here' || object.value > == 'Message Here') > > { > > object.value = ''; > > } > > } > > }, > > > > setReply: function(id) { > > this.parentid = id; > > }, > > > > thumbsUp: function(id) { > > var a = this; > > var req = new Request({ > > method: 'get', > > url: this.folder + 'backend.php', > > onSuccess: function(text, xml) { > > a.updateThumbs(id); > > } > > }).send('do=thumbs&id=' + id + '&up=true' + > this.cacheDefeat()); > > }, > > > > thumbsDown: function(id) { > > var a = this; > > var req = new Request({ > > method: 'get', > > url: this.folder + 'backend.php', > > onSuccess: function(text, xml) { > > if (text == "done") > > a.updateThumbs(id); > > } > > }).send('do=thumbs&id=' + id + '&up=false' + > this.cacheDefeat()); > > }, > > > > updateThumbs: function(messageid) { > > var up = $(this.name + 'up' + messageid); > > var down = $(this.name + 'down' + messageid); > > var upndown = $(this.name + 'updown' + messageid); > > var req = new Request({ > > method: 'get', > > url: this.folder + 'backend.php', > > onSuccess: function(text, xml) { > > var updown = text.split(";"); > > if (up != null) > > up.set('html', updown[0]); > > if (down != null) > > down.set('html', updown[1]); > > if (updown != null) > > upndown.set('html', updown[2]); > > } > > }).send('do=getthumbs&id=' + messageid + > this.cacheDefeat()); > > }, > > > > respond: function() { > > var a = this; > > var toReplace = $$("div." + this.name + "forms")[0]; > > var req = new Request({ > > method: 'post', > > url: this.folder + 'backend.php', > > onSuccess: function(text, xml) { > > if (text == "") { > > a.getComments(a.page); > > } else { > > > form.getChildren('div')[0].setStyle('display', 'block'); > > > form.getChildren('div')[0].set('html', text); > > } > > a.insertReply(); > > } > > }).send('do=write&id=' + this.id + '&parentid=' + > this.parentid + > > '&message=' + $(this.name + "formsmessage").value.replace(/&/g,"%26")+ > > '&title=' + $(this.name + "formstitle").value.replace(/&/g,"%26") + > > this.cacheDefeat()); > > }, > > > > insertReply: function(mid) { > > var name = this.name; > > var mid = mid; > > this.parentid = mid; > > var req = new Request({ > > method: 'get', > > url: this.folder + 'backend.php', > > onSuccess: function(text, xml) { > > $$("div." + name + "forms").each(function > (ele) { > > ele.set('html', ''); > > }); > > $(name + 'form').set('html', ''); > > if (mid == null) > > $(name + 'form').set('html', > text); > > else > > $(name + 'form' + > mid).set('html', text); > > } > > }).send('objid=' + name + '&do=getform&id=' + this.id + > > this.cacheDefeat()); > > }, > > > > getComments: function(page) { > > this.page = page; > > var object = this.object; > > var req = new Request({ > > method: 'get', > > url: this.folder + 'backend.php', > > onSuccess: function(text, xml) { > > object.set('html', text); > > } > > }).send('objid=' + this.name + '&do=read&thumbs=' + $( > this.name + > > "sel").value + '&id=' + this.id + '&page=' + this.page + > > this.cacheDefeat()); > > }, > > > > showComments: function(id, object) { > > var req = new Request({ > > method: 'get', > > url: this.folder + 'backend.php', > > onSuccess: function(text, xml) { > > new Element('div', { > > 'html': text > > }).inject($(object), 'after'); > > $(object).destroy(); > > } > > }).send('objid=' + this.name + '&do=comments&id=' + > this.id + > > '&pid=' + id + this.cacheDefeat()); > > } > > > > }); >
