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.

Reply via email to