Maybe you could create an empty iframe within a dom node created by your widget and attach a resize handler to its window, that way it would be automatically destroyed when the widget is removed. (but I am not sure if resize events get sent to embedded windows)
On Saturday, November 1, 2014 9:32:49 PM UTC, Felix Küppers wrote: > > Hi BJ, > > I am sorry for the misunderstanding. this all works fine. I am talking > about DOM eventlisteners ( > https://developer.mozilla.org/en-US/docs/Web/API/EventListener) for > events like "resize" that I registered at the window object at creation > time and I do not have a chance to remove them. It's not about nodes and > their deletion - its about cleaning the environment up outside the widget. > > Without a destructor I have to the following to get an event removed: > > var resizeHandler = function() { > > // remove the listener, if the object is not part of the dom anymore > // https://developer.mozilla.org/en-US/docs/Web/API/Node.contains > if(!document.body.contains(this.parentDomNode)) { > window.removeEventListener("resize", resizeHandler); > return; > } > > this.repaint(); > > }.bind(this) > > window.addEventListener("resize", resizeHandler, false); > > Regards > Felix > > On Saturday, November 1, 2014 10:09:27 PM UTC+1, BJ wrote: >> >> >> Hi Felix, >> how are you creating you entries in the dom? The render mechanism in the >> widget tree creates dom nodes, and when a widget refreshes itself these dom >> nodes are removed from the page, effectively deleting them and all there >> offspring nodes. (see removeChildDomNodes()) - so no destructor is >> necessary. >> >> On Saturday, November 1, 2014 4:40:59 PM UTC, Felix Küppers wrote: >>> >>> Hi, >>> >>> I have another question :) >>> >>> I need to register to window resize events to calculate the size of my >>> canvas as it's not possible with css without changing too much of TW. >>> >>> However, once my widget is destroyed, I cannot remove the eventlisteners >>> and next time the widget is created again, it creates another resize >>> listener. >>> >>> *Question:* So is there a destructor that is called on my widget >>> instance in which I can remove the listeners I originally created at >>> instantiation? >>> >>> Regards >>> Felix >>> >> -- You received this message because you are subscribed to the Google Groups "TiddlyWikiDev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/tiddlywikidev. For more options, visit https://groups.google.com/d/optout.
