source: branches/1.2/workflow/js/fckeditor/editor/_source/classes/fckiecleanup.js @ 1349

Revision 1349, 1.9 KB checked in by niltonneto, 15 years ago (diff)

Ticket #561 - Inclusão do módulo Workflow faltante nessa versão.

  • Property svn:executable set to *
Line 
1/*
2 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
3 * Copyright (C) 2003-2007 Frederico Caldeira Knabben
4 *
5 * == BEGIN LICENSE ==
6 *
7 * Licensed under the terms of any of the following licenses at your
8 * choice:
9 *
10 *  - GNU General Public License Version 2 or later (the "GPL")
11 *    http://www.gnu.org/licenses/gpl.html
12 *
13 *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
14 *    http://www.gnu.org/licenses/lgpl.html
15 *
16 *  - Mozilla Public License Version 1.1 or later (the "MPL")
17 *    http://www.mozilla.org/MPL/MPL-1.1.html
18 *
19 * == END LICENSE ==
20 *
21 * FCKIECleanup Class: a generic class used as a tool to remove IE leaks.
22 */
23
24var     FCKIECleanup = function( attachWindow )
25{
26        // If the attachWindow already have a cleanup object, jusgt use that one.
27        if ( attachWindow._FCKCleanupObj )
28                this.Items = attachWindow._FCKCleanupObj.Items ;
29        else
30        {
31                this.Items = new Array() ;
32
33                attachWindow._FCKCleanupObj = this ;
34                FCKTools.AddEventListenerEx( attachWindow, 'unload', FCKIECleanup_Cleanup ) ;
35//              attachWindow.attachEvent( 'onunload', FCKIECleanup_Cleanup ) ;
36        }
37}
38
39FCKIECleanup.prototype.AddItem = function( dirtyItem, cleanupFunction )
40{
41        this.Items.push( [ dirtyItem, cleanupFunction ] ) ;
42}
43
44function FCKIECleanup_Cleanup()
45{
46        if ( !this._FCKCleanupObj )
47                return ;
48
49        var aItems = this._FCKCleanupObj.Items ;
50
51        while ( aItems.length > 0 )
52        {
53
54                // It is important to remove from the end to the beginning (pop()),
55                // because of the order things get created in the editor. In the code,
56                // elements in deeper position in the DOM are placed at the end of the
57                // cleanup function, so we must cleanup then first, otherwise IE could
58                // throw some crazy memory errors (IE bug).
59                var oItem = aItems.pop() ;
60                if ( oItem )
61                        oItem[1].call( oItem[0] ) ;
62        }
63
64        this._FCKCleanupObj = null ;
65
66        if ( CollectGarbage )
67                CollectGarbage() ;
68}
Note: See TracBrowser for help on using the repository browser.