2
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
3
* Copyright (C) 2003-2009 Frederico Caldeira Knabben
7
* Licensed under the terms of any of the following licenses at your
10
* - GNU General Public License Version 2 or later (the "GPL")
11
* http://www.gnu.org/licenses/gpl.html
13
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
14
* http://www.gnu.org/licenses/lgpl.html
16
* - Mozilla Public License Version 1.1 or later (the "MPL")
17
* http://www.mozilla.org/MPL/MPL-1.1.html
21
* FCKIECleanup Class: a generic class used as a tool to remove IE leaks.
24
var FCKIECleanup = function( attachWindow )
26
// If the attachWindow already have a cleanup object, just use that one.
27
if ( attachWindow._FCKCleanupObj )
28
this.Items = attachWindow._FCKCleanupObj.Items ;
31
this.Items = new Array() ;
33
attachWindow._FCKCleanupObj = this ;
34
FCKTools.AddEventListenerEx( attachWindow, 'unload', FCKIECleanup_Cleanup ) ;
35
// attachWindow.attachEvent( 'onunload', FCKIECleanup_Cleanup ) ;
39
FCKIECleanup.prototype.AddItem = function( dirtyItem, cleanupFunction )
41
this.Items.push( [ dirtyItem, cleanupFunction ] ) ;
44
function FCKIECleanup_Cleanup()
46
if ( !this._FCKCleanupObj || ( FCKConfig.MsWebBrowserControlCompat && !window.FCKUnloadFlag ) )
49
var aItems = this._FCKCleanupObj.Items ;
51
while ( aItems.length > 0 )
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() ;
61
oItem[1].call( oItem[0] ) ;
64
this._FCKCleanupObj = null ;