Opened 10 years ago

Closed 10 years ago

#10805 closed defect (worksforme)

Tooltip: destroyRecursive() leaves DOM

Reported by: Avachan Owned by: anonymous
Priority: high Milestone: tbd
Component: Dijit Version: 1.4.0
Keywords: Cc:
Blocked By: Blocking:

Description (last modified by bill)

Hi,

I have a big problem with some Memoryleaks in my page. I use Tooltips on Buttons and when I destroy the buttons the tooltips would not be destroyed.

At end of program lifetime I destroy all Tooltips with the following code :

        this.ttip[i].close();
        this.ttip[i].destroyRendering();
        this.ttip[i].destroyRecursive();
        this.ttip[i].domNode = null;

But the domNode is still there and I can't do anything against it. My Memoryleak programm ( Drip 0.5 ) show me the Tooltip with one reference on it. But I don't know where this is come from.

Sincerly, Ava-chan

Change History (2)

comment:1 Changed 10 years ago by Avachan

Sry I've send the Bug to fast and havend declared it right.

Component: dijit Version: 1.4.1

Thx, Ava-chan

comment:2 Changed 10 years ago by bill

Component: GeneralDijit
Description: modified (diff)
Milestone: 1.5tbd
Resolution: worksforme
Status: newclosed
Summary: Tooltip destroyRecursiveTooltip: destroyRecursive() leaves DOM

Hi Ava,

I think this is just your misunderstanding. All Tooltip widgets utilize the same (single) MasterTooltip widget to actually display a tooltip. (Flyweight pattern.)

On IE, that single MasterTooltip widget is destroyed on page unload, along with all the other widgets on the page. Calling destroyRecurisve() on individual tooltips will destroy the Tooltip widgets themselves (which are typically plain <span> nodes), but leave that MasterTooltip.

To demonstrate, in our test_Tooltip.html file I can execute

dijit.byId("t_tooltip").destroyRecursive()

in the firebug console and then looking at the HTML tab the t_tooltip <span> has disappeared.

If you can supply a testcase where that isn't happening then please attach it (with the attach file button) and reopen this ticket.

Bill

PS: I recommend IEJSLeaksDetector over Drip, it seems to work much better.

Note: See TracTickets for help on using tickets.